如何从数组/json在ListView中实现OnItemClickListener?
How to implement OnItemLongClickListener on ListView from array / json?
我有一个电影列表,当我长按一部电影时,我想显示电影的简介。我尝试 运行 这个简单的代码,但它没有 return 值。
PS:我在https://app.subarnanto.com/api/inventory做的json实际上不是电影列表,我刚学会在nodejs上创建一个api和我学校的mysql任务。
谢谢你。
private static final String TAG = "MainActivity";
String url = "https://app.subarnanto.com/api/inventory";
// String url = "https://www.subarnanto.com/api/andri.json";
ListView list;
private List<MovieDataSet> listMovie = new ArrayList<>();
private MovieAdapter movieAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView)findViewById(R.id.list);
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonArrayRequest jar = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
//Toast.makeText(MainActivity.this, response.toString(), Toast.LENGTH_LONG).show();
listMovie.clear();
for (int i=0; i<response.length(); i++) {
try {
JSONObject job = response.getJSONObject(i);
MovieDataSet mds = new MovieDataSet();
mds.setImageUrl(job.getString("image"));
mds.setJudul(job.getString("name"));
mds.setYear(job.getInt("serial"));
mds.setRating(job.getDouble("tag"));
listMovie.add(mds);
} catch (JSONException e) {
e.printStackTrace();
}
}
movieAdapter = new MovieAdapter(MainActivity.this, listMovie);
movieAdapter.notifyDataSetChanged();
list.setAdapter(movieAdapter);
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.d(TAG, "onItemLongClick:" + listMovie.get(i));
Toast.makeText(MainActivity.this, "Anda menekan: " + listMovie.get(i), Toast.LENGTH_LONG).show();
return false;
}
});
}
}
使用如下代码
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.d(TAG, "onItemLongClick:" + listMovie.get(i));
Toast.makeText(MainActivity.this, "Anda menekan: " + listMovie.get(i).getSynopsis/*this from your MovieDataSet model class*/ , Toast.LENGTH_LONG).show();
return false;
}
});
我有一个电影列表,当我长按一部电影时,我想显示电影的简介。我尝试 运行 这个简单的代码,但它没有 return 值。 PS:我在https://app.subarnanto.com/api/inventory做的json实际上不是电影列表,我刚学会在nodejs上创建一个api和我学校的mysql任务。 谢谢你。
private static final String TAG = "MainActivity";
String url = "https://app.subarnanto.com/api/inventory";
// String url = "https://www.subarnanto.com/api/andri.json";
ListView list;
private List<MovieDataSet> listMovie = new ArrayList<>();
private MovieAdapter movieAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = (ListView)findViewById(R.id.list);
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonArrayRequest jar = new JsonArrayRequest(url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
//Toast.makeText(MainActivity.this, response.toString(), Toast.LENGTH_LONG).show();
listMovie.clear();
for (int i=0; i<response.length(); i++) {
try {
JSONObject job = response.getJSONObject(i);
MovieDataSet mds = new MovieDataSet();
mds.setImageUrl(job.getString("image"));
mds.setJudul(job.getString("name"));
mds.setYear(job.getInt("serial"));
mds.setRating(job.getDouble("tag"));
listMovie.add(mds);
} catch (JSONException e) {
e.printStackTrace();
}
}
movieAdapter = new MovieAdapter(MainActivity.this, listMovie);
movieAdapter.notifyDataSetChanged();
list.setAdapter(movieAdapter);
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.d(TAG, "onItemLongClick:" + listMovie.get(i));
Toast.makeText(MainActivity.this, "Anda menekan: " + listMovie.get(i), Toast.LENGTH_LONG).show();
return false;
}
});
}
}
使用如下代码
list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
Log.d(TAG, "onItemLongClick:" + listMovie.get(i));
Toast.makeText(MainActivity.this, "Anda menekan: " + listMovie.get(i).getSynopsis/*this from your MovieDataSet model class*/ , Toast.LENGTH_LONG).show();
return false;
}
});