GridView 包含类别,当我点击任何 GridView 项目(即任何类别)时,我想仅在 ViewPager 中显示属于该特定类别的项目。
例如,我有两个categories
第一的 -电子产品第二个 -电器,每当我点击时仍然如此Appliances
类别 - 它显示all
the items
(from Electronics 1 to Appliances 2
)而它必须显示only items
那些是under Appliances
类别
ISSUE
无论用户点击哪个类别,仍然显示 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)