listView,getView()中给Item设置Layoutparams类型转换异常

类型转换异常:
java.lang.ClassCastException: android.view.ViewGroup LayoutParamscannotbecasttoandroid.widget.AbsListView LayoutParams

然后,我并没有用到 AbsListView。只是进行了以下设置。

 ViewGroup.LayoutParams myparams = new ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT
                ,80);
            TextView textView = new TextView(context);
            textView.setGravity(Gravity.CENTER_VERTICAL);
            textView.setLayoutParams(myparams);

百思不得其解,在网上查阅,发现,这个myparams 是子类从父类获取到了,明白这一点,就知道怎么回事了,而我的父类是一个ListView,所以改成:

ListView.LayoutParams myparams = new ListView.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT
                ,80);

问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将选的图片显示在ListView,你需要完成以下步骤: 1. 创建一个ListView控件来显示图片,可以使用GridView或者其他适合的布局。 2. 创建一个自定义适配器,用于将图片显示在ListView。在适配器,你需要实现getView()方法,用于创建每个列表项的视图。 3. 在Activity或Fragment,处理图片选事件。当用户选一张图片时,你需要将这张图片添加到适配器的数据集。 4. 刷新适配器,以便ListView能够显示新的图片。 下面是一个简单的示例代码,可以帮助你完成以上步骤: 1. 创建一个ListView控件 ```xml <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 创建一个自定义适配器 ```java public class ImageAdapter extends BaseAdapter { private Context mContext; private List<Bitmap> mImages; public ImageAdapter(Context context) { mContext = context; mImages = new ArrayList<>(); } public void addImage(Bitmap image) { mImages.add(image); notifyDataSetChanged(); } @Override public int getCount() { return mImages.size(); } @Override public Object getItem(int position) { return mImages.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(300, 300)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); } else { imageView = (ImageView) convertView; } imageView.setImageBitmap(mImages.get(position)); return imageView; } } ``` 3. 在Activity或Fragment处理图片选事件 ```java public class MainActivity extends AppCompatActivity { private ListView mListView; private ImageAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = findViewById(R.id.list_view); mAdapter = new ImageAdapter(this); mListView.setAdapter(mAdapter); // 处理图片选事件 findViewById(R.id.btn_add_image).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, 1); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1 && resultCode == RESULT_OK) { Uri uri = data.getData(); try { Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); mAdapter.addImage(bitmap); } catch (IOException e) { e.printStackTrace(); } } } } ``` 在上面的代码,我们使用了一个Button来模拟图片选事件,当用户点击这个Button时,会启动一个系统的图片选择器。当用户选择一张图片后,我们将这张图片添加到适配器,并调用notifyDataSetChanged()方法刷新适配器。这样,ListView就能够显示新的图片了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值