Android:如何为Button设置OnClickListener是ListView?

问题描述 投票:0回答:3

我有一个ListView,其中每个项目是一个xml布局与(TextViewButton)。

我没有使用自定义适配器。那么如何为特定行中的Button设置OnClickListener

我的目的是在为该行单击Button时从该特定行检索完整的文本字符串。

ListView listView;
ArrayList<String> list;
ArrayAdapter<String> adapter;
Deal deal;

注意:我没有使用自定义适配器。我不知道如何使用它。我是新手。

        deal = new Deal();
        listView = (ListView)findViewById(R.id.listview);                                           
        firebaseDatabase = FirebaseDatabase.getInstance();
        databaseReference = firebaseDatabase.getReference();
        list = new ArrayList<>();
        adapter = new ArrayAdapter<String>(this, R.layout.deal_info, R.id.dealinfo, list);
        /*
          What if i have two TextViews in my deal_info.xml...
          what to do in that case?*/
        databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot snapshot_of_deals: dataSnapshot.child("Deals").getChildren()){

                    deal = snapshot_of_deals.getValue(Deal.class);

                    list.add("NAME      : " + deal.getName() +"\n"+
                             "CONTACT   : " + deal.getContact() +"\n"+
                             "ADDRESS   : " + deal.getAddress() +"\n"+
                             "SOW[Date] : " + deal.getReap() +"\n"+
                             "REAP[Date]: " + deal.getSow() +"\n"+
                             "ID of deal: " + deal.getDateid());
                }
                listView.setAdapter(adapter);
            }

我的行布局(deal_info.xml):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    ...
    ..>
    <TextView
        android:id="@+id/dealinfo"
        android:layout_width="282dp"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toEndOf="@+id/dealinfo"
        android:text="Accept" />
</RelativeLayout>
java android listview android-arrayadapter
3个回答
0
投票

你为什么需要一个按钮?在项目点击中检索文本会更容易我认为...

顺便说一句,如果你想实现一个自定义适配器,它不是太复杂。 Here is a tutorial to do it

在给定的文章中,您将看到名为getView()的回调。它是您在行和数据之间建立链接的地方。在这里你必须添加一个OnClickListener到你的按钮。


0
投票

你必须创建自定义listview适配器(如baseAdapter),这样你就可以轻松设置click on items按钮,但是现在你只使用了默认适配器,所以你可以在listview上添加onItemClickListener。

  list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                //do your stuff
            }
        });

0
投票
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override

        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            TextView textView = (TextView) view;
            String message =textView.getText().toString();
            Toast.makeText(this, message, Toast.LENGTH_LONG).show();
       }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.