Android 在使用json填充的listView上设置onClickListener
我实现了一个多栏列表视图,该视图由json数据填充。我还为它设置了一个onClickListener。但在运行应用程序时,当我单击listView时,我只能获取列表的第一项 我想要实现的是,当我单击listView中的任何项目时,我应该能够获得行项目。我使用的代码如下 Adapter.javaAndroid 在使用json填充的listView上设置onClickListener,android,json,listview,Android,Json,Listview,我实现了一个多栏列表视图,该视图由json数据填充。我还为它设置了一个onClickListener。但在运行应用程序时,当我单击listView时,我只能获取列表的第一项 我想要实现的是,当我单击listView中的任何项目时,我应该能够获得行项目。我使用的代码如下 Adapter.java private Activity activity; private static ArrayList prefrenceid,partnerid; private static LayoutInflat
private Activity activity;
private static ArrayList prefrenceid,partnerid;
private static LayoutInflater inflater = null;
public CompanyRegistrationAdapter(Activity a, ArrayList pref, ArrayList part) {
activity = a;
this.prefrenceid = pref;
this.partnerid=part;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return prefrenceid.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.company_registation_adapter, null);
TextView preferences = (TextView) vi.findViewById(R.id.textView20);
String song = prefrenceid.get(position).toString();
preferences.setText(song);
TextView partner = (TextView) vi.findViewById(R.id.textView21);
String song2 = partnerid.get(position).toString();
partner.setText(song2);
return vi;
}
MainActivity.java
AsyncHttpClient usercheck = new AsyncHttpClient();
usercheck.get("REST URL", new AsyncHttpResponseHandler() {
public void onSuccess(String response) {
try {
progressDialog.hide();
JSONObject obj3 = new JSONObject(response);
final JSONArray jsonArray3 = obj3.getJSONArray("REST Method");
int length3 = jsonArray3.length();
if (length3 != 0) {
for (int i = 0; i < length3; i++) {
JSONObject user3 = jsonArray3.getJSONObject(i);
preference_array.add(user3.getString("GCP_NUMBER").toString());
partner_array.add(user3.getString("COMPANY_NAME").toString());
}
adapter = new CompanyRegistrationAdapter(CompanyRegistrationResult.this, preference_array, partner_array);
fav.setAdapter(adapter);
fav.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
try {
String iPartnerID = jsonArray3.getJSONObject(position).getString("ID");
Toast.makeText(getApplicationContext(),iPartnerID,Toast.LENGTH_SHORT).show();
Intent compRegister=new Intent(getApplicationContext(),CompanyRegistration.class);
compRegister.putExtra("gcp", gcp);
compRegister.putExtra("compName", compName);
startActivity(compRegister);
} catch (JSONException e) {
e.printStackTrace();
}
String gcp=((TextView) findViewById(R.id.textView20)).getText().toString();
String compName=((TextView) findViewById(R.id.textView21)).getText().toString();
}
});
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
AsyncHttpClient usercheck=new AsyncHttpClient();
get(“RESTURL”,新的AsyncHttpResponseHandler()){
成功时公共无效(字符串响应){
试一试{
progressDialog.hide();
JSONObject obj3=新JSONObject(响应);
final JSONArray jsonArray3=obj3.getJSONArray(“REST方法”);
int length3=jsonArray3.length();
如果(长度3!=0){
对于(int i=0;i
在适配器中的getItem方法中,您只返回作为单击项索引的int,而不是实际项。您应该执行preferenceid.get(position);为什么不从模型中获取它…preference\u array.get(position).toString()这与您在textview上输入的值相同…非常感谢Fustigador和Nanoc。我让它工作了..在适配器中的getItem方法中,您只返回int,它是单击项的索引,而不是实际项。您应该执行preferenceid.get(position);为什么不从模型中获取它…preference_array.get(position).toString()它的值与你在文本视图上的值相同…非常感谢Fustigador和Nanoc。我让它工作了。。