我有一个用 ArrayAdapter 创建的 ListView,它使用 JSON 解析从 MySQL 数据库中获取不同的值。现在,当用户单击列表中的项目时,我将其中一些值传递给下一个 Activity :
@Override
public void onItemClick(AdapterView<?> a, View v, int position, long id)
{
Intent intent = new Intent(ListActivity.this, ListingDescription.class);
String place_name = ((TextView) v.findViewById(R.id.textView3)).getText().toString();
intent.putExtra("place_name",place_name);
startActivity(intent);
工作正常,但现在我想从 MySQL 数据库中获取另外 2 个不应显示在 ListView 中的值。我应该走哪条路? 我尝试在 ArrayAdapter 中添加值,但后来我意识到我是通过获取 TextView 信息来传递这些值的。我如何从 ArrayList 适配器中传递一些信息而不在 ListView 中显示? 也许有不同的方法来做到这一点?
这是我解析 JSON 的方式:
for (int i=0; i<theJson.length(); i++){
Places place = new Places();
JSONObject jRealObject = theJson.getJSONObject(i);
place.setImage(jRealObject.getString("image"));
place.setName(jRealObject.getString("name"));
place.setLocation_address(jRealObject.getString("location_address"));
place.setOpen_until(jRealObject.getString("open_until"));
placeslist.add(place);
我也考虑过将值作为不可见的放置在布局中,但我认为这绝对不是可行的方法。我将不胜感激!
最佳答案
在 Places 中创建一个 getter 方法,因为您已经有了 setter 方法。
List placeslist = new ArrayList<>();
将地点列表添加到您的适配器。
OnItemClick。
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String image = adapter.getItem(position).getImage();
String name= adapter.getItem(position).getName();
//use these in intents
}
编辑
final CustomAdapter adapter = new CustomAdapter(this, R.layout.activity_list_view, placeslist );
ListView listView = (ListView) findViewById(R.id.radioGroup);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String image = adapter.getItem(position).getImage();
String name= adapter.getItem(position).getName();
}
});
}
关于android ListView 将隐藏值从一个 Activity 传递到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33227320/