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