Android开发-数组运用-List点击通过数组传递Key-AndroidStudio
解析Json,并添加到List,如何在onClick的时候,把Json的某个key传递出去呢,我利用了数组。如果有更好的办法,请告诉我,谢谢!
/** * 数组 用于存放taskId * 数组赋值 taskIdArray[i] 在解析Json并list.add时赋值 * 数组取值 taskIdArray[position] 在onItemClick并data.setTaskId时取值 */ String[] taskIdArray = new String[100];
/**
* JSONArray
* 解析Json中的标题 并设置到 list
* 以下对应 http://125.208.12.227/appceshi/Api
*/
try {
JSONArray jsonArray = new JSONArray(result.toString());
System.out.println("jsonArray.toString() = " + jsonArray.toString());
System.out.println("jsonArray.length() = " + jsonArray.length());
for(int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.e("TAG", jsonObject.getString("id"));
String taskId = jsonObject.getString("id");
Log.e("TAG", jsonObject.getString("renwu"));
String renwu = jsonObject.getString("renwu");
list.add("taskId = " + taskId + " , renwu = " + renwu);
taskIdArray[i]=taskId;
}
taskAdapter = new TaskAdapter();
listViewTask.setAdapter(taskAdapter);
} catch (JSONException e) {
e.printStackTrace();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MyData data = new MyData();
data.setPosition(position);
data.setTaskId(taskIdArray[position]);
Intent intent = new Intent();
intent.putExtra(key, data);
//用于发送消息给Fragment two
getTargetFragment().onActivityResult(requestCode, Activity.RESULT_OK, intent);
mainActivity.showTwoFragment();
}
这里是完整的OneFragment.java:
package com.iwanghang.fragmenttransactiondemo;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* 实现OnItemClickListener(Item点击事件监听),OnClickListener(按钮点击事件监听)
*/
public class OneFragment extends Fragment implements OnItemClickListener {
/**
* item
*/
private ListView listViewTask;
private List<String> list;
private LayoutInflater inflater;
private TaskAdapter taskAdapter;
/**
* MainActivity
*/
private MainActivity mainActivity;
/**
* Json
*/
private String title;
private Volley4Json volley4Json;
/**
* 传值
*/
public static int requestCode = 0;
public static String key = "OneFragment.key";
/**
* 数组 用于存放taskId
* 数组赋值 taskIdArray[i] 在解析Json并list.add时赋值
* 数组取值 taskIdArray[position] 在onItemClick并data.setTaskId时取值
*/
String[] taskIdArray = new String[100];
//onAttach(),当fragment被绑定到activity时被调用(Activity会被传入.).
@Override
public void onAttach(Context context) {
super.onAttach(context);
mainActivity = (MainActivity) context;
}
//onCreateView(),创建和fragment关联的view hierarchy时调用.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
/**
* 实例化volley4Json
*/
volley4Json = new Volley4Json(mainActivity);
/**
* UI组件初始化
*/
View view = inflater.inflate(R.layout.fragment_one,null);
/**
* item初始化
*/
listViewTask = (ListView) view.findViewById(R.id.listViewTask);
/**
* 解析Json
*/
list = new ArrayList<String>();
volley4Json.getJsonResultTaskList(new Volley4Json.VolleyCallBack() {
@Override
/**
* JSONObject
*/
//public void onSuccess(JSONObject result) {
/**
* JSONArray
*/
public void onSuccess(JSONArray result) {
System.out.println(result.toString());
/**
* JSONObject
* 解析Json中的标题 并设置到 list
* 以下对应 http://api.zsreader.com/v2/pub/channel/list?&page=1&tp=1&size=20
*/
// try {
// JSONArray jsonArray = result.getJSONArray("data");
// for (int i = 0; i < jsonArray.length(); i++) {
// JSONObject obj2 = jsonArray.getJSONObject(i);
// Log.e("TAG", obj2.getString("title"));
// title = obj2.getString("title");
// list.add(i + " . " + title);
// }
// taskAdapter = new TaskAdapter();
// listViewTask.setAdapter(taskAdapter);
// } catch (JSONException e) {
// e.printStackTrace();
// }
/**
* JSONArray
* 解析Json中的标题 并设置到 list
* 以下对应 http://125.208.12.227/appceshi/Api
*/
try {
JSONArray jsonArray = new JSONArray(result.toString());
System.out.println("jsonArray.toString() = " + jsonArray.toString());
System.out.println("jsonArray.length() = " + jsonArray.length());
for(int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObject = jsonArray.getJSONObject(i);
Log.e("TAG", jsonObject.getString("id"));
String taskId = jsonObject.getString("id");
Log.e("TAG", jsonObject.getString("renwu"));
String renwu = jsonObject.getString("renwu");
list.add("taskId = " + taskId + " , renwu = " + renwu);
taskIdArray[i]=taskId;
}
taskAdapter = new TaskAdapter();
listViewTask.setAdapter(taskAdapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
/**
* Item点击事件监听
*/
listViewTask.setOnItemClickListener(this);
return view;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MyData data = new MyData();
data.setPosition(position);
data.setTaskId(taskIdArray[position]);
Intent intent = new Intent();
intent.putExtra(key, data);
//用于发送消息给Fragment two
getTargetFragment().onActivityResult(requestCode, Activity.RESULT_OK, intent);
mainActivity.showTwoFragment();
}
public class TaskAdapter extends BaseAdapter {
public TaskAdapter() {
super();
inflater = LayoutInflater.from(mainActivity);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = inflater.inflate(R.layout.item_task_list, parent, false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.content = (TextView) view.findViewById(R.id.textView_task);
view.setTag(viewHolder);
}
ViewHolder viewHolder = (ViewHolder) view.getTag();
viewHolder.content.setText(list.get(position));
return view;
}
}
private class ViewHolder {
private TextView content;
}
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Android系统自带5种对话框 弹框示例 dialog弹数组等
- 下一篇: sort自定义cmp函数
