gpt4 book ai didi

android - 如何使用 JSON 对象传递 JSON 数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:29 24 4
gpt4 key购买 nike

GridView 包含类别,当我点击任何 GridView 项目(即 - 任何类别)时,我想仅在 ViewPager 中显示属于该特定类别的项目。

例如,我有两个类别,第一个是Electronics,第二个是Appliances,每当我点击Appliances 类别 - 它显示 所有 项目(从 Electronics 1 到 Appliances 2),而它必须显示 only items 那些在 Appliances 类别下

问题

仍然显示 ViewPager 中的所有项目,无论用户点击了哪个类别.... 我如何仅显示属于点击类别的那些项目?

public class MainActivity extends Activity {

ArrayList<Items> itemsArrayList;
...

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

itemsArrayList = new ArrayList<Items>();

...

gridView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {

String categoryName = menusArrayList.get(position).getName().toString();
Log.d("categoryName:", categoryName);

menus = menusArrayList.get(position);
itemsArrayList = menus.getItemsArrayList();

adapter = new ViewPagerAdapter(MenusActivity.this, R.layout.adapter_viewpager, itemsArrayList);

viewPager.setAdapter(adapter);
}
});
}


class JSONAsyncTask extends AsyncTask<String, Void, Boolean> {

ProgressDialog dialog;

@Override
protected void onPreExecute() {
super.onPreExecute();

}

@Override
protected Boolean doInBackground(String... urls) {
try {

.....

JSONArray jsonArray = jsonObject.getJSONArray("category");

for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jObject = jsonArray.getJSONObject(i);

menus = new Menus();

menus.setName(jObject.getString("name"));
menus.setImage(jObject.getString("image"));

JSONArray imagesArray = jObject.getJSONArray("items");

for(int j=0; j<imagesArray.length(); j++)
{
JSONObject imagesObject = imagesArray.getJSONObject(j);

items = new Items();
items.setTitle(imagesObject.getString("title"));
items.setImage(imagesObject.getString("image"));

itemsArrayList.add(items);
}

menus.setItemsArrayList(itemsArrayList);
menusArrayList.add(menus);
}
return true;
}
...
return false;
}

protected void onPostExecute(Boolean result) {
dialog.cancel();
...

}
}

}

最佳答案

您的 itemArrayList 是全局的,在解析时,您每次阅读类别时都会将项目添加到该列表中。因此,您的 itemListArray 包含所有项目。因为当您将项目添加到列表时它是对列表的引用,所以您也将项目添加到以前的类别,因为它们引用相同的列表。尝试像这样更改您的内部循环。

ArrayList<Items> itemsArrayList = new ArrayList<Items>();    
for(int j=0; j<imagesArray.length(); j++)
{
JSONObject imagesObject = imagesArray.getJSONObject(j);

items = new Items();
items.setTitle(imagesObject.getString("title"));
items.setImage(imagesObject.getString("image"));

itemsArrayList.add(items);
}

关于android - 如何使用 JSON 对象传递 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30047959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com