这是我的代码:
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
Movie movie = new Movie();
movie.setTitle(obj.getString("name")); //get json array name
}
// adding movie to movies array
movieList.add(movie);
}
,列表click listener
时,我onclick
就像这样:
listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3) {
//update json array name to sqlite
db.updateUser(XXXXXXXXXXXXXX); // this value i want get from json array movie.setTitle()
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
}
});
如何从jsonarray获取值并将其用于onclicklistener?
有人建议使用bean类,但我不确定我是否明白该怎么做..
答案 0 :(得分:0)
在具有JsonArray
的类中//create an ivar
private static Movie myMovie // <- this is the value you want.
// then make a method
public static Moive getMovie(){return MyJSONArrayClass.myMovie}
// modify your json Class to do this
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
myMovie = new Movie();
movie.setTitle(obj.getString("name")); //get json array name
}
// adding movie to movies array
movieList.add(movie);
}
// then in the class with the onclick listener do
listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2,
long arg3) {
//update json array name to sqlite
db.updateUser(XXXXXXXXXXXXXX); // this value i want get from json array movie.setTitle()
Intent i = new Intent(getApplicationContext(), MainActivity.class);
Movie movie = MyJSONArrayClass.getMovie();
if(null != movie){
// add your code here
}
startActivity(i);
}
});
如果您不想使用静态
,您还可以查看实现Singleton来为电影提供服务答案 1 :(得分:0)
在您的第一个代码段中,response
变量引用了JSON数组,您显然将其作为网络请求的响应收到。如果您希望适配器能够在该代码的方法返回后继续使用该数据,则需要保留对原始数据的引用,或者您需要复制数据(并将其存储起来)在内存中适配器的生命周期,或以某种方式坚持它。)
在您的第二个代码段中,您似乎只需要电影片段。碰巧在第一个片段中,您在movieList
中存储了Movie
个对象列表(每个对象都包含一个电影标题)。因此,如果movieList
可用于您的第二个代码段,并且Movie
类提供了获取电影标题的方式(例如,getTitle()
方法),那么您可以执行此操作在你的第二个片段中获取所点击项目的标题:
String movieTitle = movieList.get(position).getTitle();
注意:onItemClick()
的第三个参数是所点击项目的位置。另外,我假设movieList
的类型与java.util.List<Movie>
类似。