如何确定它是我的文本还是其他文本,然后正确附加到列表视图
How to determine if it's my text or others, then appending correctly to listview
到目前为止我有以下代码:
if (c.getString(c.getColumnIndexOrThrow("type")).toString().contains("1")) {
Context context = getApplicationContext();
CharSequence text = c.getString(c.getColumnIndexOrThrow("type")).toString();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
adapter = new ArrayAdapter<String>(this, R.layout.incomming, R.id.message, sms_body);
lv.setAdapter(adapter);
} else {
adapter = new ArrayAdapter<String>(this, R.layout.outgoing, R.id.message, sms_body);
lv.setAdapter(adapter);
}
大部分情况下都有效,但它只选择一个,所以我的问题是如何使用传入布局或发送布局正确附加,这是我第一次使用列表视图获得此 "fancy",所以 任何 帮助非常感谢!谢谢
问题:
我的意思是我希望它看起来像 iOS Messenger 或更好的 Facebook Messenger,就像如果它是收件箱消息它是蓝色的,如果它是我的它的灰色布局。
额外信息:
它获取所有收件箱的消息,并将发件箱发送到刚刚给您发短信的号码。您需要的任何其他信息让我知道!
完整代码:http://pastebin.com/NmV39ajq
融合。
目前您正在更改 ListView 布局,这不是为 ListView 行显示多个布局的正确方法:
1. 创建一个自定义适配器,它对行使用两种布局,一种用于收件箱,另一种用于我的消息。
参见以下示例:
Multiple Layout ListView
2. 使用带有自定义 class 对象的 ArrayList 作为包含消息类型和消息正文的数据源
public class MessageDetails{
private String mesgType;
private String mesgBody;
// create getter/setter methods to set/get both variables values
}
3. 创建一个包含 MessageDetails
class 个对象的 ArrayList:
ArrayList<MessageDetails> arrMessageDetails=new ArrayList<MessageDetails>;
if (c.moveToLast()) {
do {
if (c.getString(c.getColumnIndexOrThrow("address")) == null) {
c.moveToNext();
continue;
}
String Body = c.getString(c.getColumnIndexOrThrow("body"))
.toString();
CharSequence text = c.getString(c.getColumnIndexOrThrow("type")).toString();
MessageDetails object=new MessageDetails();
object.setmesgType(text);
object.setmesgBody(Body);
arrMessageDetails.add(object);
} while (c.moveToPrevious());
4. 使用 arrMessageDetails
作为适配器的数据源:
CustomAdapter adapter = new CustomAdapter(this,R.id.message, arrMessageDetails);
lv.setAdapter(adapter);
到目前为止我有以下代码:
if (c.getString(c.getColumnIndexOrThrow("type")).toString().contains("1")) {
Context context = getApplicationContext();
CharSequence text = c.getString(c.getColumnIndexOrThrow("type")).toString();
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
adapter = new ArrayAdapter<String>(this, R.layout.incomming, R.id.message, sms_body);
lv.setAdapter(adapter);
} else {
adapter = new ArrayAdapter<String>(this, R.layout.outgoing, R.id.message, sms_body);
lv.setAdapter(adapter);
}
大部分情况下都有效,但它只选择一个,所以我的问题是如何使用传入布局或发送布局正确附加,这是我第一次使用列表视图获得此 "fancy",所以 任何 帮助非常感谢!谢谢
问题: 我的意思是我希望它看起来像 iOS Messenger 或更好的 Facebook Messenger,就像如果它是收件箱消息它是蓝色的,如果它是我的它的灰色布局。
额外信息: 它获取所有收件箱的消息,并将发件箱发送到刚刚给您发短信的号码。您需要的任何其他信息让我知道!
完整代码:http://pastebin.com/NmV39ajq
融合。
目前您正在更改 ListView 布局,这不是为 ListView 行显示多个布局的正确方法:
1. 创建一个自定义适配器,它对行使用两种布局,一种用于收件箱,另一种用于我的消息。
参见以下示例: Multiple Layout ListView
2. 使用带有自定义 class 对象的 ArrayList 作为包含消息类型和消息正文的数据源
public class MessageDetails{
private String mesgType;
private String mesgBody;
// create getter/setter methods to set/get both variables values
}
3. 创建一个包含 MessageDetails
class 个对象的 ArrayList:
ArrayList<MessageDetails> arrMessageDetails=new ArrayList<MessageDetails>;
if (c.moveToLast()) {
do {
if (c.getString(c.getColumnIndexOrThrow("address")) == null) {
c.moveToNext();
continue;
}
String Body = c.getString(c.getColumnIndexOrThrow("body"))
.toString();
CharSequence text = c.getString(c.getColumnIndexOrThrow("type")).toString();
MessageDetails object=new MessageDetails();
object.setmesgType(text);
object.setmesgBody(Body);
arrMessageDetails.add(object);
} while (c.moveToPrevious());
4. 使用 arrMessageDetails
作为适配器的数据源:
CustomAdapter adapter = new CustomAdapter(this,R.id.message, arrMessageDetails);
lv.setAdapter(adapter);