繁体   English   中英

如何制作可点击的 ListView

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM