我在数据库中有2个表,我使用他们的topic_id加入了这两个表,使用以下查询:
SELECT ReplyData.topic_id, ReplyData.reply_user, ReplyData.reply_content, ReplyData.reply_datetime FROM
ReplyData INNER JOIN ForumData ON ForumData.topic_id = ReplyData.topic_id
结果是: Result of the joined table
现在我有一个listView,我想将检索到的数据显示到listView。但我想只显示一些数据。例如,在listView的第1项中,我只想显示topic_id = 36的数据,而在listView的第2项中,我只想显示带有topic_id = 37等的数据。但我不想'我知道怎么做。我只能显示listView的第1项和第2项中的所有项目,这使得它们始终显示相同的数据。它就像一个讨论论坛,有人打开帖子,有人做出回复。所以我会继续打开帖子,这些帖子会显示在listView中,如果有人点击这个项目并做出回复,这个回复只会出现在这个项目中,而不会出现在其他项目中
我有自定义适配器来显示数据,并从php文件和JSONObject中检索数据。所有的工作正常,但正确显示数据。 非常感谢任何帮助。
自定义适配器:
View itemView = convertView;
if (itemView == null) {
itemView = getLayoutInflater().inflate(R.layout.layout_reply, parent, false);
}
// find the activity to work with
ReplyItemList currentActivity = itemList.get(position);
// fill the view
TextView makeReplyUser = (TextView) itemView.findViewById(R.id.tvRespondent);
makeReplyUser.setText("Re: " + currentActivity.getRespondent() + " ");
TextView makeReplyContent = (TextView) itemView.findViewById(R.id.tvReplyContent);
makeReplyContent.setText(currentActivity.getReplyContent());
TextView makeReplyDatetime = (TextView) itemView.findViewById(R.id.tvReplyDatetime);
makeReplyDatetime.setText("(" + currentActivity.getDateTime() + ")");
return itemView;
答案 0 :(得分:0)
使用getter和setter创建一个类,使用类对象在setter中添加列值,然后创建一个arraylist xyz = new arraylist();
然后在arraylist
中添加包含db值的类对象然后通过在arrayadapter的构造函数中传递arraylist对象将listview与此arraylist绑定
然后在getview()内部分配/(getters)各个视图的值
答案 1 :(得分:0)
你的问题不是很明确,但如果我理解得当,你有两个选择;一个比另一个好:
THE WORSE
您可以使用if条件修改getCount
,getItem
,getView
等...(如果topic_nr = 36则不显示)。
最佳
以前的解决方案存在一个真正的问题:您丢失了一层抽象。
如果必须这样做,我根本不会修改适配器(因为适配器在设计上只是为了渲染数据,而不是为了计算它们)而且我会处理列表本身的所有操作:具体来说,我会有两个列表,data
和displayed
,我会从数据中选择一些项目并将它们放在displayed
中,然后调用adapter.notifyDataSetChanged
。适配器仅显示displayed
中包含的项目。
答案 2 :(得分:0)
在PHP中运行查询,将值集合到一个数组中。在循环中,写出XML文件。调用.php URL(我知道iPhone的XCode - API是NSURL) - 应该有适用于Android的解析器(我知道有一个用于iOS);再次,在循环中,创建项目以构成列表视图并显示。