繁体   English   中英

如何在Android的自定义列表视图中从TextView获取值

[英]How to get the value from TextView in a custom list view in android

我是android开发的新手,最近我写了一段代码来显示android设备中所有已保存的联系人。 为此,我使用了一个具有2个文本视图的自定义列表视图(以显示联系人姓名,联系人号码)。 它起作用了,但是现在我想在单击列表项时获得联系人姓名和电话号码(Toast消息)。 如何实现呢?

 // list item click listener
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(MainActivity.this, "Contact Name : " + contactList.get(i)  , Toast.LENGTH_SHORT).show();
            }
        });

这是我在MainActivity中编写的代码。

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    ListView list;
    public String Contactname;
    public String Contactnumber;


    // array list
    final ArrayList<Contacts> contactList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        list = (ListView)findViewById(R.id.listContact);

        fetchContact(); // call fetch contact method

        // show number of contacts - toast message (testing purpose)
        int count = contactList.size();
        Toast.makeText(this, "Count : " + count , Toast.LENGTH_SHORT).show();


    }

    public void fetchContact()
    {
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        String[] projection ={ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER};
        String selection = null;
        String[]selectionArgs = null;
        String sortOrder =null;

        ContentResolver resolver =getContentResolver();
        Cursor cursor =resolver.query(uri,projection,selection,selectionArgs,sortOrder);

        while(cursor.moveToNext()){
          Contactname =cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
          Contactnumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            Contacts contacts = new Contacts(Contactname,Contactnumber);

            contactList.add(contacts);
        }


        contactAdapter adapter = new contactAdapter(MainActivity.this,R.layout.activity_list_item,contactList);
        list.setAdapter(adapter);

        // list item click listner
        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(MainActivity.this, "Contact Name : " + contactList.get(i)  , Toast.LENGTH_SHORT).show();
            }
        });
    }


}

这是我用来保存联系人姓名,电话号码的类。我将类存储到数组对象中

    public class Contacts {
        // properties
        public String name;
        public String number;

        public Contacts(String name, String number) {
            this.name = name;
            this.number = number;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getNumber() {
            return number;
        }

        public void setNumber(String number) {
            this.number = number;
        }
    }

您可以使用Interface从textview获取数据。 为此,您必须执行以下步骤。

第一步:在你的contactAdapter.class File.TO 创建界面中创建界面,您可以写。

public interface contactClickListener{
         void onContactClick(List<contact> currentContact);

}

步骤2:然后在使用以下语句创建接口对象之后。

contactClickListener listener;

步骤3:在contactAdapter中, OnBindMethod首先使用以下语句获取当前ContactInfo

Contacts currentContact=contactList.get(position);

步骤4:然后在On Contact适配器上为Textview实施OnClick事件并在onclick事件内部调用界面。

listener.onContactClick(currentContact);

步骤5:当前,您在contactAdapter中有三个参数,因此现在在contactAdapter类中添加一个参数。

       contactAdapater(Existingparameter1 p1,Existingparameter2 p2,Existingparameter3 p3,contactClickListener listener){
this.listener=listener;
}

第6步:然后在“创建和调用联系适配器时转到您的活动”之后。 使用下面的语句实现联系人适配器方法。

public class MainActivity extends AppCompatActivity implements contactadapter.OnContactClickListener{

}

步骤7:然后在活动中更改Contactadapter以实现接口。

contactAdapter adapter = new contactAdapter(MainActivity.this,R.layout.activity_list_item,contactList);
    list.setAdapter(adapter);

步骤8: OncontactClick方法是在活动中生成的,您可以在其中获取textview和联系人模型类的所有详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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