我对应用程序开发还很陌生,所以这可能是一个非常愚蠢的问题,但我似乎无法找到正确的答案(或者至少有一个我能用我非常有限的java知识理解的答案)。
我正在使用名为ListRow的自定义ArrayAdapter。它适用于常规Activity,但不适用于我需要它才能让我的应用程序工作的ListActivity。
以下是我正在使用的代码示例。任何帮助将不胜感激,你会帮助一吨!
ListView mListview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ListRow(this, THEME_NAMES, THEME_ICONS));
getListView().setTextFilterEnabled(true);
}
public class ListRow extends BaseAdapter {
private Context mContext;
private String[] mThemeNames = THEME_NAMES;
private int[] mThemeIcons = THEME_ICONS;
public ListRow(Context c, String[] t, int[] i) {
mContext = c;
mThemeNames = t;
mThemeIcons = i;
mListview=(ListView)findViewById(R.id.list);
}
@Override
public int getCount() {
return mThemeNames.length;
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int position, View converView, ViewGroup parent) {
View List;
if(converView==null){
List=new View(mContext);
LayoutInflater mLayoutinflater=getLayoutInflater();
List=mLayoutinflater.inflate(R.layout.list_view, parent, false);
} else {
List = (View)converView;
}
ImageView imageView = (ImageView)List.findViewById(R.id.image);
TextView textView = (TextView)List.findViewById(R.id.text);
imageView.setImageResource(mThemeIcons[position]);
textView.setText(mThemeNames[position]);
return List;
}
}
这是我为每个列表项定义的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:id="@+id/image"
android:layout_alignParentLeft="true"
android:contentDescription="@string/preview" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/image" />
</RelativeLayout>
如果可以的话,请跟我说小词,大声笑,java对我来说很难理解,并尽可能多地解释。提前谢谢!
图示出来! 所以我只是把你们搞得一团糟。包含我的列表项的布局称为list_item,而不是list_view。不过我在这里学到了很多,所以非常感谢你!我希望有一种方法可以帮助你们......
这个问题的道德?检查您的布局名称!!
答案 0 :(得分:1)
您需要以这种方式设置适配器
setListAdapter(new ListRow(this, your_theme_names_array, your_theme_icon_array));
你不需要为此使用ArrayAdapter,这只是为String数组创建适配器
<强> EDITED 强>
布局XML没有我想到的问题。
逐一查看下面给出的列表
核对清单
答案 1 :(得分:0)
您必须在setListAdapter中的ArrayAdapter中添加mListView。然后,listview的内容将以您在customadapter中提到的模式显示。我无法看到你在listview中添加元素的位置。