这里我有一个rootCategoryID的String数组和一个String categoryID。
在我的自定义ListView上,我想为每一行传递不同的ID。
但我不能让它发挥作用!这是我的代码:
package ir.zabardast.onlinemarket;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class Main extends ListActivity {
String[] rootCategoryName = new String[6];
String[] rootCategoryImage = new String[6];
String[] rootCategoryID = new String[6];
int categoryCount;
String categoryID = "0";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(true){
setContentView(R.layout.activity_main);
HandleXML hxml = new HandleXML();
String url = "http://karakaal.com/market/category.xml";
String object = "category";
hxml.fetchXML(url, object);
while(hxml.parsingComplete);
categoryCount = hxml.getCategories().size();
for (int i = 0; i < categoryCount; i++) {
if(hxml.getCategories().get(i).getParentId() == 0){
rootCategoryName[i] = hxml.getCategories().get(i).getName();
}
}
for (int i = 0; i < categoryCount; i++) {
if(hxml.getCategories().get(i).getParentId() == 0){
rootCategoryImage[i] = hxml.getCategories().get(i).getImage();
}
}
for (int i = 0; i < categoryCount; i++) {
if(hxml.getCategories().get(i).getParentId() == 0){
rootCategoryImage[i] = hxml.getCategories().get(i).getId();
}
}
setListAdapter(new MyAdapter(this,
android.R.layout.simple_list_item_1,
R.id.listName,
rootCategoryName));
ListView listView = getListView();
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View view, int i, long l) {
Intent intent = new Intent(Main.this, CategoryList.class);
intent.putExtra("categoryID", categoryID);
startActivity(intent);
}
});
} else if (!checkWifi()) {
setContentView(R.layout.wifi_check);
}
}
private class MyAdapter extends ArrayAdapter<String>{
public MyAdapter(Context context, int resource, int textViewResourceId,
String[] rootCategoryName) {
super(context, resource, textViewResourceId, rootCategoryName);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View row = inflater.inflate(R.layout.list, parent, false);
String[] products = rootCategoryName;
ImageView iv = (ImageView) row.findViewById(R.id.listImage);
TextView tv = (TextView) row.findViewById(R.id.listName);
tv.setText(products[position]);
int loader = R.drawable.ic_launcher;
ImageLoader imgLoader = new ImageLoader(getApplicationContext());
String baseURL = "http://karakaal.com/market/";
imgLoader.DisplayImage(baseURL + rootCategoryImage[position], loader, iv);
categoryID = rootCategoryID[position];
return row;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean checkWifi()
{
ConnectivityManager conman = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
boolean wifi = conman.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
if (wifi)
return true;
else
return false;
}
}
正如您所看到的,我使用变量在我的私有类中设置categoryID
我想在点击每一行时将Intent的每行的rootCategoryID传递给下一个活动
答案 0 :(得分:2)
您可以按ListView点击的位置获取categoryID
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> av, View view, int i, long l) {
Intent intent = new Intent(Main.this, CategoryList.class);
intent.putExtra("categoryID", rootCategoryID[i]);//here CategoryId
startActivity(intent);
}
});