我有一個Rss源,我正在解析成列表視圖。我想要做的是當用戶第一次加載應用程序,它保存日期或類似的東西,然後只顯示列表的第一天。然後,當用戶在第二天登錄時,它會從首選項中記住該日期,並向其中添加一個日期,並在列表視圖中顯示第一天和第二天等等。另外,如果用戶幾天沒有打開該應用,則需要顯示用戶錯過的日子。例如,用戶在第一天和第二天打開應用程序並看到這些文章,然後直到第5天才打開應用程序,他們仍然需要在列表中看到第1-5天。我想我可以用Shared Preference來做所有這些,但是我沒有使用共享首選項,也沒有找到任何教程來涵蓋我在這裏要做的任何事情。我將在這裏列出我使用的代碼。如果有人願意與我一起解決這個問題,我將不勝感激。使用共享首選項來顯示列表視圖中的特定項目
XML解析活動和ListView
public class AndroidXMLParsingActivity extends ListActivity {
// All static variables
static final String URL = "http://www.cpcofc.org/devoapp.xml";
// XML node keys
static final String KEY_ITEM = "item"; // parent node
static final String KEY_ID = "item";
static final String KEY_NAME = "title";
static final String KEY_COST = "description";
static final String KEY_DESC = "description";
static final String KEY_GUID = "guid";
static final String KEY_LINK = "link";
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
map.put(KEY_COST, parser.getValue(e, KEY_COST));
map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
map.put(KEY_GUID, parser.getValue(e, KEY_GUID));
map.put(KEY_LINK, parser.getValue(e,KEY_LINK));
// adding HashList to ArrayList
menuItems.add(map);
}
// Adding menuItems to ListView
ListAdapter adapter = new SimpleAdapter(this, menuItems,
R.layout.list_item,
new String[] { KEY_DESC, KEY_NAME, KEY_COST, KEY_GUID}, new int[] {
R.id.desciption, R.id.name, R.id.cost});
setListAdapter(adapter);
Collections.reverse(menuItems);
// selecting single ListView item
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
String cost = ((TextView) view.findViewById(R.id.cost)).getText().toString();
Uri uriUrl = Uri.parse(menuItems.get(position).get(KEY_GUID));
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_NAME, name);
in.putExtra(KEY_COST, cost);
// **NEED TO PASS STRING OBJECT NOT URI OBJECT**
in.putExtra(KEY_GUID, uriUrl.toString());
startActivity(in);
}
});
}
}
這裏是什麼樣子,現在
你願意把這個聊天,並幫助我通過這個工作。我真的很想了解它如何更好地工作,並閱讀了教程,但他們似乎只對我想要用戶登錄有所幫助,但對這種情況確實沒有幫助 – Bryan