[英]Copy one item from an ArrayList to another ArrayList Java 8
[英]copy specific item from one arraylist to another arraylist
我是android progmmaing的新手,我想问一个简单的问题
我已经设法解析一个RSS提要,并将特定的元素(例如Title,pubdate,link,media和description)保存在数据库中。 然后我使用了一个arraylist从数据库中检索数据。 该代码是
public static ArrayList<Item> GetItems(AndroidDB androiddb) {
SQLiteDatabase DB = androiddb.getReadableDatabase();
ArrayList<Item> result = new ArrayList<Item>();
try {
Cursor c = DB.rawQuery("select * from ITEMS_TABLE", null);
if (c.getCount() > 0) {
c.moveToFirst();
do {
result.add(new Item(
c.getString(0),
c.getString(1),
c.getString(2),
c.getString(3),
c.getString(4)));
} while (c.moveToNext());
}
c.close();
DB.close();
} catch (SQLException e){
Log.e("DATABASE", "Parsing Error", e);
}
return result;
}
其中0包含标题元素的数据库的第一列
现在我只想用title元素创建一个listview,所以我在onCreate方法中创建了一个ArrayList,我的问题是我如何才能从以前的ArrayList中仅复制引用Title元素的项目。 我已经编写了这部分代码。 我应该在循环中写些什么来复制特定项目?
ArrayList<String> first_item = new ArrayList<String>();
items=AndroidDB.GetItems(rssHandler.androiddb);
int numRows=items.size();
for(int i=0; i < numRows; ++i) {
first_item.add());
}
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, first_item));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, show a toast with the TextView text
Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
Toast.LENGTH_SHORT).show();
}
});
}
catch (Exception e) {
tv.setText("Error: " + e.getMessage());
Log.e(MY_DEBUG_TAG, "Parsing Error", e);
}
this.setContentView(tv);
}
提前致谢
一些简短的评论-首先,
if (c.getCount() > 0) {
c.moveToFirst();
do {
result.add(new Item(
c.getString(0),
c.getString(1),
c.getString(2),
c.getString(3),
c.getString(4)));
} while (c.moveToNext());
}
可以安全地替换为以下简单方法:
while (c.moveToNext()) {
....
}
没有特别的理由以这种方式检查大小,并且您不需要在游标上调用moveToFirst()。 这只是对可维护性的建议,并不能回答您的问题,但我想将其扔在那里,以节省将来的击键次数。
就您的问题-如果我理解正确,您想从复合对象列表中获取元素列表-基本上,该列表由包含该属性的对象列表中特定属性的所有实例组成。 没有捷径可做。 幸运的是,您可以比其他代码更简洁地执行此操作:
List<CompoundObjectWithAStringProperty> foo = /* go get the list */
List<String> allProperties = new ArrayList<String>();
for (CompoundObjectWithAStringProperty obj : foo) {
allProperties.add(obj.getStringProperty());
}
您的代码在那儿占了90%,但是它是如此的类似于C。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.