[英]How to make Clickable ListView
我的 ListView 有问题...我希望应用程序在单击其中包含的每个元素时进入第二个活动。 在第二个活动中将有更新和删除功能。 ListView 中存在的元素包含在 mysql 数据库中并用 json 恢复......你能帮我理解如何编程 ListView 元素的点击吗?
public class LoggedActivity extends AppCompatActivity {
private RequestQueue mQueue;
private ListView list_view;
Button buttonParse;
Button aggingi_prodotto;
private ArrayList<String> lista;
private ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logged);
list_view = findViewById(R.id.list_view);
lista = new ArrayList<>();
buttonParse = findViewById(R.id.button_parse);
aggingi_prodotto = findViewById(R.id.aggiungi_prodotto);
//--------------------------
Bundle extras = getIntent().getExtras();
final String id_utente = extras.getString("id");
//--------------------------
mQueue = Volley.newRequestQueue(this);
aggingi_prodotto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),AggiungiActivity.class);
intent.putExtra("id",id_utente);
startActivity(intent);
}
});
buttonParse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
jsonParse(id_utente);
}
});
}
private void jsonParse(final String id_utente) {
String url = "http://192.168.1.5/progettoPHP/WebServices/webSrv.php?type=recuperaProdotti&idutente=" + id_utente;
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("Dati");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject dato = jsonArray.getJSONObject(i);
String id = dato.getString("id");
final String id_utente = dato.getString("id_utente");
String nome_prodotto = dato.getString("nome_prodotto");
//lista.add(id_utente + " - " + id + " - " + nome_prodotto + "\n\n");
lista.add(nome_prodotto);
}
adapter = new ArrayAdapter<String>(LoggedActivity.this, android.R.layout.simple_list_item_1, lista);
list_view.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
mQueue.add(request);
}
}
像这样尝试
list_view.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
// do whatever you want to click of the listview item
}
});
如果你想要List Click
你可以简单地使用
list_view.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
// do whatever you want to click of the listview item
}
});
您可以使用ResyclerView
代替Listview
如果要单击列表中的特定项并获取项的位置,可以在 Adapter 中创建 Listner
在Adapter
已初始化
private OnItemClick onItemClick;
点击列表器
ItemView.setOnClickListener(v -> {
if (onItemClick != null) {
onItemClick.onItem(i);
}
});
职能
public interface OnItemClick {
void onItem(int position);
}
public void setOnItem(OnItemClick onItemClick) {
this.onItemClick = onItemClick;
}
在MainActivity
adapter.setOnItem(new Adapter.OnItemClick() {
@Override
public void onItem(int i) {
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.