Android listview中有2种不同的布局
我所拥有的 我有一个导航抽屉,它的列表视图是定制的。第一行有imageview,其他行有textview。我的适配器代码如下:Android listview中有2种不同的布局,android,Android,我所拥有的 我有一个导航抽屉,它的列表视图是定制的。第一行有imageview,其他行有textview。我的适配器代码如下: public class drawer_list_adapter extends BaseAdapter { Context context; String[] nv_items; int[] pro_pic; LayoutInflater layoutInflater; public drawer_list_adapter(Context context, Str
public class drawer_list_adapter extends BaseAdapter {
Context context;
String[] nv_items;
int[] pro_pic;
LayoutInflater layoutInflater;
public drawer_list_adapter(Context context, String[] nv_items) {
this.context = context;
this.nv_items = nv_items;
this.layoutInflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return 4;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public int getViewTypeCount() {
return 4;
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder dLI;
if (convertView == null) {
if (getItemViewType(position) == 0){
convertView = layoutInflater.inflate(R.layout.drawer_pro_pic, parent, false);
dLI = new ViewHolder();
convertView.setTag(dLI);
}
else {
convertView = layoutInflater.inflate(R.layout.drawer_list_item, parent, false);
dLI = new ViewHolder();
convertView.setTag(dLI);
dLI.items = (TextView) convertView.findViewById(R.id.drawer_list_text);
dLI.items.setText(nv_items[position]);
}
}
else {
dLI = (ViewHolder) convertView.getTag();
}
return convertView;
}
public class ViewHolder {
TextView items;
}
}
在这里一切都很好
现在我想更改此listview中的图像。用户可以从galler中选择图像。我的代码如下:
private class DrawerItemClickListener implements AdapterView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
if (position == 0){
Intent pickFromGallery = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(pickFromGallery, OpenGallery);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == OpenGallery && resultCode == RESULT_OK){
Uri pickedImage = data.getData();
String[] filePath = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(pickedImage, filePath, null, null, null);
cursor.moveToFirst();
String imagePath = cursor.getString(cursor.getColumnIndex(filePath[0]));
pro_pic_selected.setImageBitmap(BitmapFactory.decodeFile(imagePath));
cursor.close();
}
}
我的onCreate方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_do_it_main_screen);
addTask = (Button) findViewById(R.id.addTask);
addNote = (Button) findViewById(R.id.addNote);
addNote.setOnClickListener(this);
addTask.setOnClickListener(this);
final ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
drawerLayout = (DrawerLayout) findViewById(R.id.NvDrawer);
drawerList = (ListView) findViewById(R.id.drawer_list);
drawer_list_adapter drawerListAdapter = new drawer_list_adapter(this, nv_items);
drawerList.setAdapter(drawerListAdapter);
drawerList.setOnItemClickListener(new DrawerItemClickListener());
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close);
drawerLayout.setDrawerListener(drawerToggle);
}
任何帮助都将不胜感激。谢谢您应该初始化onCreate方法中选择的ImageView pro_pic_。i、 e.您需要将该行置于pro_pic_selected=ImageView findviewbydr.id.ImageView;内部onCreate。如果您想在类中的任何位置使用该视图,可以在类do_it_主屏幕内的类作用域中声明它。另外,请确保在layout R.layout.activity\u do\u it\u main\u屏幕中有一个ID为ImageView的ImageView,否则findViewById将返回null。通过这种方式,命名约定将有所帮助,不管怎样,这是do\u it\u main\u屏幕中的第54行。javapro\u pic\u selected=ImageView findViewByIdR.ID.ImageView;pro_pic_selected.setImageResourceR.drawable.cake;这个。忽略此bcoz我这样做只是为了看看当我从绘图设备中选择图像时它是否有效。如果没有该代码,错误会出现在这里pro_pic_selected.setImageBitMapFactory.decodeFileimagePath;第54号。。。。是第一线还是第二线?也是第二行。基本上,错误来自为我的imageView设置图像的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_do_it_main_screen);
addTask = (Button) findViewById(R.id.addTask);
addNote = (Button) findViewById(R.id.addNote);
addNote.setOnClickListener(this);
addTask.setOnClickListener(this);
final ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
drawerLayout = (DrawerLayout) findViewById(R.id.NvDrawer);
drawerList = (ListView) findViewById(R.id.drawer_list);
drawer_list_adapter drawerListAdapter = new drawer_list_adapter(this, nv_items);
drawerList.setAdapter(drawerListAdapter);
drawerList.setOnItemClickListener(new DrawerItemClickListener());
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close);
drawerLayout.setDrawerListener(drawerToggle);
}