0

GridViewからインテントに渡される適切な値を取得するにはどうすればよいですか。私はこれを間違った方法でやっているようです。これが私がしたことです:

私のMainActivityで:

CategoryRowItem category;
.
.  
.
//after parsing from json
 category = new CategoryRowItem(catId, catName);
 categoryItems.add(category);

 gridView = (GridView) findViewById(R.id.grid_view);
 final CustomBaseAdapter adapter = new CustomBaseAdapter(this, categoryItems);
 gridView.setAdapter(adapter);

 gridView.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> parent, View view, int position, long id){
            String categoryId = category.getCatId(); // i think this not right
            String categoryName = category.getCatName();
            System.out.println("CAT ID: " +categoryId);
            Intent intent = new Intent(getApplicationContext(), ShopListActivity.class);
            intent.putExtra("catID", categoryId);
            intent.putExtra(CATEGORY, categoryName);
            startActivity(intent);
        }
    });

私のCategoryRowItemクラス:これにはゲッターとセッターがあります

    public String getCatId(){
    return catId;
}

public String getCatName(){
    return catName;
}
    public void setCatId(String cId){
    this.catId = cId;
}

public void setCatName(String name){
    this.catName = name;
}

だから、どうすればcatIDやクリックしたアイテムのcatNameのような正しい値を取得できますか>

4

2 に答える 2

1

position、リスト内のどのアイテムがクリック/選択されたかを示し、それを使用して、あなたCategoryRowItemとその詳細を取得できます。

CategoryRowItem category = categoryItems.get(position); // Add this line here.
String categoryId = category.getCatId(); // Now this will be right.
String categoryName = category.getCatName();
于 2013-03-12T10:21:54.393 に答える
1
gridView.setOnItemClickListener(new OnItemClickListener() {

    public void onItemClick(AdapterView<?> parent, View view, int position, long id){
        String categoryId = categoryItems.get(position).getCatId(); // i think this not right
        String categoryName = categoryItems.get(position).getCatName();
        System.out.println("CAT ID: " +categoryId);
        Intent intent = new Intent(getApplicationContext(), ShopListActivity.class);
        intent.putExtra("catID", categoryId);
        intent.putExtra(CATEGORY, categoryName);
        startActivity(intent);
    }
});

このコードをグリッドリスナーに置き換えます

于 2013-03-12T10:24:11.920 に答える