在我的应用程序中,我创建了大约3个收藏夹联系人,我从设备的现有联系人中选择。我能够使用Name和PhoneNo成功地将FAV联系人存储到SharedPreferences上,并且还能够检索该信息并将其呈现在TextView中。但我想要的是在列表视图中使用custom_row布局显示该数据。 (我已经使用了TextView的东西来确保我能正确地检索它 - 对我自己进行小测试)
我需要帮助的地方是"在ListView中显示FAV联系人数据,我从SharedPreferences" 中检索。我正在显示我的代码,我可以在TextView中显示数据。如果你们能建议我如何把它放到ListView上,我会很高兴...
以下是代码段:
public class FavContacts_Activity extends ActionBarActivity {
TextView title, tV_Contacts_list;
Button go_Back_to_ContactsList;
ListView imp_Contacts_List;
public static final String PREF_FILE_NAME = "PACKAGE";
SharedPreferences preferences;
String [] imp_Contacts = {};
StringBuffer sb = new StringBuffer();
int count = 0, i = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView (R.layout.favcontacts_list);
title = (TextView) findViewById (R.id.contacts_title);
tV_Contacts_list = (TextView) findViewById (R.id.tV_Contacts_list);
imp_Contacts_List = (ListView) findViewById (R.id.listView1);
go_Back_to_ContactsList = (Button) findViewById (R.id.btn_Back);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, imp_Contacts);
preferences = getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
for (count = 0; count <3; count++) {
String contacts_list = preferences.getString("CONTACT "+count, null);
tV_Contacts_list.setTextSize(15);
tV_Contacts_list.append("\n "+ i +". "+ contacts_list);
imp_Contacts_List.setAdapter(adapter);
i++;
}
go_Back_to_ContactsList.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
});
}
}
如果需要通过AlertDialogs将FAV联系人存储到SharedPreferences,我是否需要代码的其他部分。
以下是屏幕快照:
答案 0 :(得分:2)
我不知道你为什么要在循环中设置适配器,但是这里有一个例子,如何用你的联系人创建一个适配器,然后用它来填充自定义行的列表视图:
preferences = getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
List<String> contacts = new ArrayList<String>();
// Loop through the shared prefs, adding contacts to our List
for (int i = 0; i < 3; i++) {
String contacts_list = preferences.getString("CONTACT "+i, null);
contacts.add((i+1)+". "+contacts_list);
}
// Create the adapter with contacts
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.listview_row, R.id.list_item, contacts);
// Populate the list
imp_Contacts_List.setAdapter(adapter);
您的自定义列表视图行 listview_row.xml :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/list_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
</TextView>
</LinearLayout>
注意强>:
确保您的 favcontacts_list.xml 中包含android:id="@+id/imp_Contacts_List"
的列表视图。
答案 1 :(得分:0)
您可以使用adapter.add(data);
和adapter.remove(data);
方法修改适配器中的数据。
试试这个 -
preferences = getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
for (count = 0; count <3; count++) {
String contacts_list = preferences.getString("CONTACT "+count, null);
adapter.add(contacts_list);
tV_Contacts_list.setTextSize(15);
tV_Contacts_list.append("\n "+ i +". "+ contacts_list);
i++;
}
imp_Contacts_List.setAdapter(adapter);