ListView显示图片的问题

x443137254 2018-04-14 01:22:24
没有代码我就描述一下....
情况是这样的,建一个ListView,Item是一张图片,宽高自适应,然后在适配器里把图片显示出来。然后问题来了,我在Adapter里面抽取某一个ImageView并将其赋值到一个成员变量中,然后通过一个按钮单独修改那一张图片内容,发现并不起作用。我不是拿到那个ImageView对象了么,为什么不能直接修改呢?
模拟问题的场景我只放了2个ImageView,所以不存在超出屏幕看不见的问题



还有就是为什么Glide里面那个overwright感觉没卵用,写不写都一样,传什么参数也一个样,毫无影响,这就是我不喜欢现成车轮的原因
...全文
1964 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
x443137254 2018-04-22
  • 打赏
  • 举报
回复
或许是要深入了解一下适配器了,还是不能偷懒。不过话说回来,就没人去了解过稍微给小弟讲解一下的么实在是还有很多事要做没心情去挖一些不痛不痒的点,但是感觉我们很多人就是因为这样止步的,遇到问题知道怎么解决就完事了,没有多问一个为什么。
peacejay 2018-04-20
  • 打赏
  • 举报
回复
代码不变布局改一下
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true">
    </ListView>
    <Button
        android:onClick="click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/button" />
</RelativeLayout>
neweast0183 2018-04-19
  • 打赏
  • 举报
回复
我查到了你重写onResume方法,加入一行((MyAdapter)getListAdapter()).notifyDataSetChanged();记得重写超类方法就是super.onResume();
头发还没秃a 2018-04-19
  • 打赏
  • 举报
回复
你要先了解一下 Adapter 里面 Item 是怎么装载数据的
kingiis 2018-04-19
  • 打赏
  • 举报
回复
了解下 recyclerview 跟享元模式。
neweast0183 2018-04-18
  • 打赏
  • 举报
回复
adapter有一个方法可以及时的更新列表项,我忘了是哪个了你看看api文档,是一个方法名中有notify的方法。
cocoabird 2018-04-18
  • 打赏
  • 举报
回复
mImageView没初始化
cocoabird 2018-04-18
  • 打赏
  • 举报
回复
引用 7 楼 yuelengdihai 的回复:
mImageView没初始化
看错了,打下log看看mImageView的值,多打几个log就明白了
x443137254 2018-04-17
  • 打赏
  • 举报
回复
引用 5 楼 qq_39178733 的回复:
怎么说呢 你得了解一下adapter的相关知识 推荐你一个好用的框架 BaseQueckAdapter
是让我去看下adapter源码么,这是我最不愿走的一步...我知道通过adapter可以修改listview内容,我想知道的是为什么只能通过那个方式呢,我都明明拿到里面的view对象了
余震l 2018-04-16
  • 打赏
  • 举报
回复
怎么说呢 你得了解一下adapter的相关知识 推荐你一个好用的框架 BaseQueckAdapter
x443137254 2018-04-14
  • 打赏
  • 举报
回复
那好吧我把问题写一下,2楼的那个不是我说的这个问题
public class TestActivity extends AppCompatActivity {
    private ImageView mImageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        ((ListView)findViewById(R.id.lv)).setAdapter(new MyAdapter());
    }
    public void click(View v){
        mImageView.setImageResource(R.drawable.a01);
    }

    private class MyAdapter extends BaseAdapter {

        @Override
        public int getCount() {
            return 2;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView iv = new ImageView(TestActivity.this);
            iv.setImageResource(R.drawable.a02);
            if (position == 0) mImageView = iv;
            return iv;
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
    <Button
        android:onClick="click"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>
就是不能用那个button直接修改图片内容,不知道为什么
这个人中暑了 2018-04-14
  • 打赏
  • 举报
回复
楼主还是把代码贴出来吧
键盘舞者113 2018-04-14
  • 打赏
  • 举报
回复
    public View getViewByPosition(int pos, ListView listView) {
        int firstListItemPosition = listView.getFirstVisiblePosition();
        int lastListItemPosition = firstListItemPosition
                + listView.getChildCount() - 1;

        if (pos < firstListItemPosition || pos > lastListItemPosition) {
            return listView.getAdapter().getView(pos, null, listView);
        } else {
            final int childIndex = pos - firstListItemPosition;
            return listView.getChildAt(childIndex);
        }
    }

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧