您必须提供一个资源ID为一个TextView android的错误 [英] You must supply a resource ID for a TextView android error
问题描述
我试试这个一整天都解决此错误。我不明白为什么我的logcat打印:
05-06 21:45:59.559: ERROR / ConversationList(9023):我们有 聊天... 05-06 21:45:59.609: ERROR / ConversationList(9023): UpdateList结束... 05-06 21:45:59.839: ERROR / ArrayAdapter(9023):你必须 提供一个资源ID为一个TextView 05-06 21:45:59.839: DEBUG / AndroidRuntime(9023):关闭 下VM 05-06 21:45:59.839: WARN / dalvikvm(9023):主题ID = 3: 螺纹与未捕获的异常退出 (组= 0x4000fe70)05-06 21:45:59.839: ERROR / AndroidRuntime(9023):未捕获 处理:线程由于主要退出 未捕获的异常05-06 21:45:59.879: ERROR / AndroidRuntime(9023): java.lang.IllegalStateException: ArrayAdapter需要的资源ID 是一个TextView 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.AbsListView.obtainView(AbsListView.java:1269) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.ListView.makeAndAddView(ListView.java:1623) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.ListView.fillDown(ListView.java:607) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.ListView.fillFromTop(ListView.java:664) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.ListView.layoutChildren(ListView.java:1481) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.AbsListView.onLayout(AbsListView.java:1113) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.LinearLayout.onLayout(LinearLayout.java:918) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.FrameLayout.onLayout(FrameLayout.java:333) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.LinearLayout.onLayout(LinearLayout.java:918) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.FrameLayout.onLayout(FrameLayout.java:333) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.view.ViewRoot.performTraversals(ViewRoot.java:929) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.view.ViewRoot.handleMessage(ViewRoot.java:1482) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.os.Handler.dispatchMessage(Handler.java:99) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.os.Looper.loop(Looper.java:123) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.app.ActivityThread.main(ActivityThread.java:3948) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 java.lang.reflect.Method.invokeNative(母语 法)05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 java.lang.reflect.Method.invoke(Method.java:521) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:782) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 dalvik.system.NativeStart.main(母语 法)05-06 21:45:59.879: ERROR / AndroidRuntime(9023):产生的原因: java.lang.ClassCastException: android.widget.LinearLayout 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):在 android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:340) 05-06 21:45:59.879: ERROR / AndroidRuntime(9023):... 30 更多
我的Java文件:
包fshizzle.com;
进口的java.util.ArrayList;
进口android.app.ListActivity;
进口android.app.NotificationManager;
进口android.content.BroadcastReceiver;
进口android.content.Context;
进口android.content.Intent;
进口android.content.IntentFilter;
进口android.database.Cursor;
进口android.database.sqlite.SQLiteDatabase;
进口android.os.Bundle;
进口android.util.Log;
进口android.view.ContextMenu;
进口android.view.MenuInflater;
进口android.view.MenuItem;
进口android.view.View;
进口android.widget.AdapterView.AdapterContextMenuInfo;
进口android.widget.ArrayAdapter;
进口android.widget.ListAdapter;
进口android.widget.ListView;
进口android.widget.TextView;
进口cz.jabbim.android.data.JabberoidDbConnector;
进口fshizzle.com.R;
公共类ConversationList扩展ListActivity {
//私有静态最后字符串变量=ConversationList.class;
私有静态最终诠释RESULT_CHAT = 4004;
私有静态最终诠释RESULT_DIRECTCHAT = 4005;
私有静态最后字符串变量=ConversationList;
私人的ArrayList<字符串> chatList =新的ArrayList<字符串>();
私人TextView的电视;
私人字符串lastJid;
BroadcastReceiver的企业社会责任;
IntentFilter的F;
布尔秀= TRUE;
@覆盖
公共无效的onCreate(包冰柱){
super.onCreate(冰柱);
的setContentView(R.layout.conversationlist);
电视=(TextView中)findViewById(R.id.contactList_NoConversation);
CSR =新的BroadcastReceiver(){
@覆盖
公共无效的onReceive(上下文的背景下,意图意图){
getChats();
updateList(假);
}
};
F =新的IntentFilter();
f.addAction(cz.jabbim.android.androidim.NEW_MESSAGE);
registerForContextMenu(getListView());
}
@覆盖
公共无效的OnStart(){
super.onStart();
getChats();
updateList(显示);
秀= TRUE;
如果(getIntent()。getBooleanExtra(为startChat,FALSE)){
为startChat(getIntent()getStringExtra(JID));
秀= FALSE;
}
}
@覆盖
公共无效onResume(){
super.onResume();
cancelNotification();
registerReceiver(CSR,F);
}
@覆盖
公共无效的onPause(){
super.onPause();
unregisterReceiver(CSR);
}
@覆盖
公共无效的onStop(){
super.onStop();
}
@覆盖
保护无效onListItemClick(ListView的LV,视图V,INT POS,长ID){
super.onListItemClick(LV,V,POS机,ID);
为startChat(POS);
}
@覆盖
公共无效onCreateContextMenu(文本菜单菜单,视图V,ContextMenu.ContextMenuInfo menuInfo){
新MenuInflater(getApplication())膨胀(R.menu.conversationlist_context,菜单)。
AdapterContextMenuInfo ACMI =(AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle(聊天+ getJid(acmi.position));
super.onCreateContextMenu(菜单,V,menuInfo);
}
@覆盖
公共布尔onContextItemSelected(菜单项项){
AdapterContextMenuInfo ACMI =(AdapterContextMenuInfo)item.getMenuInfo();
开关(item.getItemId()){
案例R.id.menuEnter:
为startChat(acmi.position);
返回true;
案例R.id.menuCloseChat:
closeChat(acmi.position);
返回true;
}
返回super.onContextItemSelected(项目);
}
私人诠释getChats(){
最终的String [] returnColumns = {
Constants.TABLE_CONVERSATION_FIELD_ID,
Constants.TABLE_CONVERSATION_FIELD_CHAT,
MIN(+(Constants.TABLE_CONVERSATION_FIELD_DATE)+),为'firstReceived',
};
SQLiteDatabase DB =新JabberoidDbConnector(本).getWritableDatabase();
游标结果= db.query(Constants.TABLE_CONVERSATION,
returnColumns,
空,//Constants.TABLE_CONVERSATION_FIELD_FROM +!='我',
空值,
Constants.TABLE_CONVERSATION_FIELD_CHAT,
空值,
firstReceived ASC);
诠释计数= result.getCount();
chatList.clear();
result.moveToFirst();
而(!result.isAfterLast()){
chatList.add(result.getString(result.getColumnIndex(Constants.TABLE_CONVERSATION_FIELD_CHAT)));
//chatList.add("rafa@localhost.localdomain);
result.moveToNext();
}
result.close();
结果= NULL;
db.close();
返回计数;
}
私人无效updateList(布尔为startChat){
如果(chatList.size()大于0){
如果(chatList.size()== 1&安培;&安培;为startChat){
为startChat(0);
}
Log.e(TAG,我们有聊天......);
tv.setVisibility(View.GONE);
。getListView()setVisibility(View.VISIBLE);
ListAdapter适配器=新的ArrayAdapter<字符串>(
本,
R.layout.conversation_item,
chatList
);
getListView()setAdapter(适配器)。
//startChat("rafa@localhost.localdomain);
//为startChat(getIntent()getStringExtra(FROMUSER));
} 其他 {
Log.e(TAG,我们没有聊天......);
。getListView()setVisibility(View.GONE);
tv.setVisibility(View.VISIBLE);
tv.setText(R.string.conversationList_noOpenConversation);
}
//使用后关闭数据库
Log.e(TAG,UpdateList结束......);
}
@覆盖
公共无效onActivityResult(INT申请code,INT结果code,意图数据){
如果(要求code == RESULT_CHAT){
诠释聊天= getChats();
如果(聊天== 0){
完();
}否则,如果(聊天== 1){
字符串JID;
JID = getJid(0);
如果(lastJid.equals(JID)){
完();
} 其他 {
秀= FALSE;
}
} 其他 {
秀= FALSE;
}
}否则,如果(要求code == RESULT_DIRECTCHAT){
完();
}
}
私人无效cancelNotification(){
NotificationManager纳米=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
nm.cancel(Constants.NEW_MESSAGE_NOTIFICATION);
}
私人无效为startChat(INT POS){
字符串JID = getJid(POS);
lastJid = JID;
finishActivity(RESULT_CHAT);
意图I =新的意图(这一点,Conversations.class);
i.putExtra(JID,JID);
startActivityForResult(ⅰ,RESULT_CHAT);
的setResult(RESULT_OK);
完();
}
私人无效为startChat(字符串JID){
finishActivity(RESULT_DIRECTCHAT);
意图I =新的意图(这一点,Conversations.class);
i.putExtra(JID,JID);
startActivityForResult(ⅰ,RESULT_DIRECTCHAT);
的setResult(RESULT_OK);
完();
}
私人无效closeChat(INT POS){
SQLiteDatabase DB =新JabberoidDbConnector(本).getWritableDatabase();
db.delete(Constants.TABLE_CONVERSATION,
Constants.TABLE_CONVERSATION_FIELD_CHAT +=+ getJid(POS)+',
空值);
db.close();
getChats();
updateList(假);
}
私人字符串getJid(INT POS){
返回chatList.get(POS);
}
//私人无效handleUpdateList(){
//}
}
`
该错误是在这里:
ListAdapter适配器=新的ArrayAdapter<字符串>(
本,
R.layout.conversation_item,
chatList
);
getListView()setAdapter(适配器)。
没有错误,当我将其删除。
ListAdapter适配器=新的ArrayAdapter<字符串>(
本,
R.layout.conversation_item,
chatList
);
getListView()setAdapter(适配器)。
有什么解决办法吗?
conversation_item.xml
< XML版本=1.0编码=UTF-8&GT?;
<的LinearLayout
机器人:layout_width =FILL_PARENT
机器人:layout_height =FILL_PARENT
的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / conversation_item>
<的TextView
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / conversation_item_name
机器人:文本=名称姓氏
机器人:文字颜色=#FFFFFF
机器人:TEXTSTYLE =黑体
机器人:TEXTSIZE =16dip
机器人:layout_width =FILL_PARENT
机器人:layout_marginTop =10dip
机器人:layout_marginBottom =10dip
机器人:layout_marginLeft =10dip>
< / TextView的>
<的TextView
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / conversation_item_date
机器人:layout_width =FILL_PARENT
机器人:文本=2010年6月17日15:30>
< / TextView的>
<的TextView
机器人:layout_height =WRAP_CONTENT
机器人:layout_width =FILL_PARENT
机器人:ID =@ + ID / conversation_item_message
机器人:文本=只是一些消息......
机器人:文字颜色=#FFFFFF>
< / TextView的>
< / LinearLayout中>
我是pretty的确定问题出在你的 conversation_item
的布局。该文档状态,你必须提供资源以单的TextView 。这是什么布局会是什么样子?
作为一个例子,这就是simple_list_item_1管理布局的样子,你应该是pretty的相似。
< XML版本=1.0编码=UTF-8&GT?;
< TextView中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@机器人:ID / text1中
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
机器人:textAppearance =机器人:ATTR / textAppearanceLarge
机器人:重力=center_vertical
机器人:以下属性来=6dip
机器人:=了minHeight机器人:ATTR /列表preferredItemHeight
/>
编辑:
我刚才编辑的问题,使您的布局将显示。您的布局确实是错误的,如果你使用的构造函数,你不能有线性布局存在。您可以使用其他的构造函数( ArrayAdapter(上下文的背景下,INT资源,INT textViewResourceId,T []对象)
),并提供您的自定义布局和您的TextView的ID。
I try all this day to resolve this error. I don't understand why my logcat prints:
05-06 21:45:59.559: ERROR/ConversationList(9023): We have chats... 05-06 21:45:59.609: ERROR/ConversationList(9023): UpdateList end... 05-06 21:45:59.839: ERROR/ArrayAdapter(9023): You must supply a resource ID for a TextView 05-06 21:45:59.839: DEBUG/AndroidRuntime(9023): Shutting down VM 05-06 21:45:59.839: WARN/dalvikvm(9023): threadid=3: thread exiting with uncaught exception (group=0x4000fe70) 05-06 21:45:59.839: ERROR/AndroidRuntime(9023): Uncaught handler: thread main exiting due to uncaught exception 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:347) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.AbsListView.obtainView(AbsListView.java:1269) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.ListView.makeAndAddView(ListView.java:1623) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.ListView.fillDown(ListView.java:607) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.ListView.fillFromTop(ListView.java:664) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.ListView.layoutChildren(ListView.java:1481) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.AbsListView.onLayout(AbsListView.java:1113) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.view.View.layout(View.java:6133) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.view.ViewRoot.performTraversals(ViewRoot.java:929) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.view.ViewRoot.handleMessage(ViewRoot.java:1482) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.os.Handler.dispatchMessage(Handler.java:99) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.os.Looper.loop(Looper.java:123) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.app.ActivityThread.main(ActivityThread.java:3948) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at java.lang.reflect.Method.invokeNative(Native Method) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at java.lang.reflect.Method.invoke(Method.java:521) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at dalvik.system.NativeStart.main(Native Method) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): Caused by: java.lang.ClassCastException: android.widget.LinearLayout 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:340) 05-06 21:45:59.879: ERROR/AndroidRuntime(9023): ... 30 more
My Java file:
package fshizzle.com;
import java.util.ArrayList;
import android.app.ListActivity;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import cz.jabbim.android.data.JabberoidDbConnector;
import fshizzle.com.R;
public class ConversationList extends ListActivity {
// private static final String TAG = "ConversationList.class";
private static final int RESULT_CHAT = 4004;
private static final int RESULT_DIRECTCHAT = 4005;
private static final String TAG = "ConversationList";
private ArrayList<String> chatList = new ArrayList<String>();
private TextView tv;
private String lastJid;
BroadcastReceiver csr;
IntentFilter f;
boolean show = true;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.conversationlist);
tv = (TextView)findViewById(R.id.contactList_NoConversation);
csr = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
getChats();
updateList(false);
}
};
f = new IntentFilter();
f.addAction("cz.jabbim.android.androidim.NEW_MESSAGE");
registerForContextMenu(getListView());
}
@Override
public void onStart() {
super.onStart();
getChats();
updateList(show);
show = true;
if(getIntent().getBooleanExtra("startChat", false)) {
startChat(getIntent().getStringExtra("jid"));
show = false;
}
}
@Override
public void onResume() {
super.onResume();
cancelNotification();
registerReceiver(csr, f);
}
@Override
public void onPause() {
super.onPause();
unregisterReceiver(csr);
}
@Override
public void onStop() {
super.onStop();
}
@Override
protected void onListItemClick(ListView lv, View v, int pos, long id) {
super.onListItemClick(lv, v, pos, id);
startChat(pos);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
new MenuInflater(getApplication()).inflate(R.menu.conversationlist_context, menu);
AdapterContextMenuInfo acmi = (AdapterContextMenuInfo)menuInfo;
menu.setHeaderTitle("Chat with " + getJid(acmi.position));
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()) {
case R.id.menuEnter:
startChat(acmi.position);
return true;
case R.id.menuCloseChat:
closeChat(acmi.position);
return true;
}
return super.onContextItemSelected(item);
}
private int getChats() {
final String[] returnColumns = {
Constants.TABLE_CONVERSATION_FIELD_ID,
Constants.TABLE_CONVERSATION_FIELD_CHAT,
"MIN("+(Constants.TABLE_CONVERSATION_FIELD_DATE)+") as 'firstReceived'",
};
SQLiteDatabase db = new JabberoidDbConnector(this).getWritableDatabase();
Cursor result = db.query(Constants.TABLE_CONVERSATION,
returnColumns,
null, //Constants.TABLE_CONVERSATION_FIELD_FROM + "!= 'me'",
null,
Constants.TABLE_CONVERSATION_FIELD_CHAT,
null,
"firstReceived ASC" );
int count = result.getCount();
chatList.clear();
result.moveToFirst();
while(!result.isAfterLast()) {
chatList.add(result.getString(result.getColumnIndex(Constants.TABLE_CONVERSATION_FIELD_CHAT)));
//chatList.add("rafa@localhost.localdomain");
result.moveToNext();
}
result.close();
result = null;
db.close();
return count;
}
private void updateList(boolean startChat) {
if(chatList.size() > 0) {
if(chatList.size()==1 && startChat) {
startChat(0);
}
Log.e(TAG, "We have chats...");
tv.setVisibility(View.GONE);
getListView().setVisibility(View.VISIBLE);
ListAdapter adapter = new ArrayAdapter<String>(
this,
R.layout.conversation_item,
chatList
);
getListView().setAdapter(adapter);
//startChat("rafa@localhost.localdomain");
// startChat(getIntent().getStringExtra("fromUser"));
} else {
Log.e(TAG, "We don't have chats...");
getListView().setVisibility(View.GONE);
tv.setVisibility(View.VISIBLE);
tv.setText(R.string.conversationList_noOpenConversation);
}
// close the database after usage
Log.e(TAG, "UpdateList end...");
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==RESULT_CHAT) {
int chats = getChats();
if(chats==0) {
finish();
} else if(chats==1) {
String jid;
jid = getJid(0);
if(lastJid.equals(jid)) {
finish();
} else {
show = false;
}
} else {
show = false;
}
} else if (requestCode==RESULT_DIRECTCHAT) {
finish();
}
}
private void cancelNotification() {
NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
nm.cancel(Constants.NEW_MESSAGE_NOTIFICATION);
}
private void startChat(int pos) {
String jid = getJid(pos);
lastJid = jid;
finishActivity(RESULT_CHAT);
Intent i = new Intent(this, Conversations.class);
i.putExtra("jid", jid);
startActivityForResult(i, RESULT_CHAT);
setResult(RESULT_OK);
finish();
}
private void startChat(String jid) {
finishActivity(RESULT_DIRECTCHAT);
Intent i = new Intent(this, Conversations.class);
i.putExtra("jid", jid);
startActivityForResult(i, RESULT_DIRECTCHAT);
setResult(RESULT_OK);
finish();
}
private void closeChat(int pos) {
SQLiteDatabase db = new JabberoidDbConnector(this).getWritableDatabase();
db.delete(Constants.TABLE_CONVERSATION,
Constants.TABLE_CONVERSATION_FIELD_CHAT + " = '" + getJid(pos) + "'",
null);
db.close();
getChats();
updateList(false);
}
private String getJid(int pos) {
return chatList.get(pos);
}
// private void handleUpdateList() {
// }
}
`
The error is here:
ListAdapter adapter = new ArrayAdapter<String>(
this,
R.layout.conversation_item,
chatList
);
getListView().setAdapter(adapter);
No error when I remove it.
ListAdapter adapter = new ArrayAdapter<String>(
this,
R.layout.conversation_item,
chatList
);
getListView().setAdapter(adapter);
What is the solution please?
conversation_item.xml
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/conversation_item">
<TextView
android:layout_height="wrap_content"
android:id="@+id/conversation_item_name"
android:text="Name Surname"
android:textColor="#ffffff"
android:textStyle="bold"
android:textSize="16dip"
android:layout_width="fill_parent"
android:layout_marginTop="10dip"
android:layout_marginBottom="10dip"
android:layout_marginLeft="10dip">
</TextView>
<TextView
android:layout_height="wrap_content"
android:id="@+id/conversation_item_date"
android:layout_width="fill_parent"
android:text="17.6.2010 15:30">
</TextView>
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/conversation_item_message"
android:text="Just some message..."
android:textColor="#ffffff">
</TextView>
</LinearLayout>
I'm pretty sure the problem lies in your conversation_item
layout. The docs state that you must provide a resource with a single TextView. What does that layout look like?
As an example, this is what the simple_list_item_1 layout looks like, yours should be pretty similar.
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:minHeight="?android:attr/listPreferredItemHeight"
/>
EDIT:
I just edited the question so your layout will show. Your layout is indeed wrong, you cannot have the linear layout there if you're using that constructor. You can use the other constructor ( ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
) and provide your custom layout and your TextView's id.
这篇关于您必须提供一个资源ID为一个TextView android的错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!