使用 ArrayAdapter 在 ListView 中仅显示图像 return black Activity?
Display only images in ListView using ArrayAdapter return black Activity?
我只想向 ListView 添加图像,我创建了 Activity 和 ArrayAdapter,如下所示
Activity 和 ArrayAdapter 类
public class Main extends ActionBarActivity{
ListView icons ;
ArrayList <Drawable> items ;
Adapter adapter ;
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.main);
icons = (ListView) findViewById(R.id.icon);
items = new ArrayList<Drawable>() { };
items.add(getResources().getDrawable(R.drawable.r));
items.add(getResources().getDrawable(R.drawable.b));
items.add(getResources().getDrawable(R.drawable.g));
adapter = new Adapter(this,0,items);
icons.setAdapter(adapter);
}
}
class Adapter extends ArrayAdapter<Drawable>{
ArrayList<Drawable> items ;
ImageView image ;
public Adapter(Context c,int resources,ArrayList<Drawable>list){
super(c,resources,list);
this.items = list ;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.images, parent, false);
}
image= (ImageView) convertView.findViewById(R.id.image);
image.setBackground(items.get(position));
return convertView;
}
}
images.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="350dp"
android:id="@+id/images" />
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/icon"
android:layout_gravity="center_horizontal" />
我得到的是白色黑色 Activity,这段代码有什么问题?
提前致谢!
更改这些行:
image= (ImageView) convertView.findViewById(R.id.image);
image.setBackground(items.get(position));
到
image= (ImageView) convertView.findViewById(R.id.images);
image.setImageDrawable(items.get(position));
并改变
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/icon"
android:layout_gravity="center_horizontal" />
到
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/icon"
android:layout_gravity="center_horizontal" />
从 activity 的 onCreate
中删除第二个参数:
使用
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
}
而不是
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
//...
}
此外,您发现错误的 ImageView id,请将 Adapter 的 getView()
中的 R.id.image
替换为 R.id.images
。并将 setBackground()
更改为 setImageDrawable()
我只想向 ListView 添加图像,我创建了 Activity 和 ArrayAdapter,如下所示
Activity 和 ArrayAdapter 类
public class Main extends ActionBarActivity{
ListView icons ;
ArrayList <Drawable> items ;
Adapter adapter ;
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
setContentView(R.layout.main);
icons = (ListView) findViewById(R.id.icon);
items = new ArrayList<Drawable>() { };
items.add(getResources().getDrawable(R.drawable.r));
items.add(getResources().getDrawable(R.drawable.b));
items.add(getResources().getDrawable(R.drawable.g));
adapter = new Adapter(this,0,items);
icons.setAdapter(adapter);
}
}
class Adapter extends ArrayAdapter<Drawable>{
ArrayList<Drawable> items ;
ImageView image ;
public Adapter(Context c,int resources,ArrayList<Drawable>list){
super(c,resources,list);
this.items = list ;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.images, parent, false);
}
image= (ImageView) convertView.findViewById(R.id.image);
image.setBackground(items.get(position));
return convertView;
}
}
images.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="350dp"
android:id="@+id/images" />
main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/icon"
android:layout_gravity="center_horizontal" />
我得到的是白色黑色 Activity,这段代码有什么问题?
提前致谢!
更改这些行:
image= (ImageView) convertView.findViewById(R.id.image);
image.setBackground(items.get(position));
到
image= (ImageView) convertView.findViewById(R.id.images);
image.setImageDrawable(items.get(position));
并改变
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/icon"
android:layout_gravity="center_horizontal" />
到
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/icon"
android:layout_gravity="center_horizontal" />
从 activity 的 onCreate
中删除第二个参数:
使用
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
}
而不是
@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
//...
}
此外,您发现错误的 ImageView id,请将 Adapter 的 getView()
中的 R.id.image
替换为 R.id.images
。并将 setBackground()
更改为 setImageDrawable()