之前我问了一个关于拆分字符串的问题,但可能还不够清楚。
我做了一个简单的活动,其中有一个例子就是我的问题。
我有一条消息,这是一个来自服务器的长消息。
我需要拆分此消息并将其放入列表视图中,我将向您显示我的代码。
public class Page1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity6);
String message = "0---12,,,2013-02-12 08:04,,,this is a test,,,0---11,,,2013-02-12 08:05,,,and this is why it is damaged,,,0---10,,,2013-02-12 08:06,,,what comes from select data randomly";
String[] variables = message.split(",");
ListView listView1 = (ListView) findViewById(R.id.listView12);
String[] items = { variables.toString() };
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, items);
listView1.setAdapter(adapter);
}
}
现在让我们说分裂是逗号“,”所以它将是
0---12 ------->ID1
2013-02-12 08:04 ------------>date1
this is a test ----------->subject1
0---11 ------->ID2
2013-02-12 -8:05 ------------>date2
and this is why it is damaged ----------->subject2
依此类推,现在我不能做的是我想把这些字符串放在循环中并将它们写入listview,使得subject1应该在item1中,而date1应该在subitem1中,就像这样
Subject1
Date1
------
Subject2
Date2
------
列表视图应该是这样的
有人可以帮我这个吗?
答案 0 :(得分:0)
请注意,ArrayAdaper
适用于仅包含一个TextView
的商品。 From the docs:
由任意对象数组支持的具体BaseAdapter。默认情况下,此类期望提供的资源ID引用单个TextView
考虑对ArrayAdapter
(docs)进行子类化并覆盖其getView
方法。
答案 1 :(得分:0)
您需要创建自定义ArrayAdapter
,以便按照您希望的方式从对象中填充ListView
。
这项技术的优势在于您获得了一种视图回收机制,可以回收Views
内部的ListView
以减少内存。
简而言之你必须:
1。创建一个表示单行数据的对象。
2. :创建这些对象的ArrayList
。
3. 使用代码创建包含ListView的布局或将ListView添加到主布局。
4. :创建单行布局。
5。创建ViewHolder
,代表Views
的支持点,代表数据行的视觉方面。
6。创建一个自定义ArrayAdapter
,根据您的需要填充行,其中您将覆盖getView
方法并使用position
您收到的相关行View
的参数,表示行index
。
7。最后将此ArrayAdapter
分配给ListView
中的onCreate
。
您可以通过阅读我写的博客文章了解如何实现这一点: