ListView 里面有个 SimpleAdapter,SimpleAdapter 里面的 ImageView 怎么更改图片

谁学逆向工程 2016-10-02 08:41:02
for 循环添加了 20 行,每行都是一样的,这代码是照视频教程做的。但是他没说怎么更改图片和文字

<!-- main.xml -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView" />
</LinearLayout>


<!-- item.xml -->
<?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">

<ImageView
android:layout_alignParentLeft="true"
android:id="@+id/pic"
android:layout_marginLeft="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_toRightOf="@id/pic"
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000000"
android:text="demo"/>
<ImageView
android:layout_alignParentRight="true"
android:id="@+id/pic2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/tiger" />

</RelativeLayout>

package com.example.administrator.third;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AbsListView;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

public class MainActivity extends Activity implements AdapterView.OnItemClickListener, AbsListView.OnScrollListener
{

ListView listView;
ArrayAdapter<String> arr_adapter;
SimpleAdapter simp_adapter;
List<Map<String, Object>> dataList;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = (ListView)findViewById(R.id.listView);
String []arr_data = {"豆芽菜","大鲅鱼","大葱","咸鸭蛋" };

dataList = new ArrayList<Map<String,Object>>();

arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr_data);
simp_adapter = new SimpleAdapter(
this,
getData(),
R.layout.item,
new String[]{"text","pic2", "pic"},
new int []{R.id.text, R.id.pic2, R.id.pic});

// listView.setAdapter(arr_adapter);
listView.setAdapter(simp_adapter);
listView.setOnItemClickListener(this);
listView.setOnScrollListener(this);
}

List<Map<String, Object>> getData()
{
for(int i = 0; i<20; i++ )
{
Map<String,Object> map = new HashMap<>();
map.put("text", "豆芽菜"+i);
map.put("pic2",R.drawable.tiger );
map.put("pic", R.mipmap.ic_launcher);
dataList.add(map);
}
return dataList;
}


public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
String text = listView.getItemAtPosition(position) + "";
Toast.makeText(this, "position = " + position + " text= "+ text, Toast.LENGTH_SHORT ).show();
}

int i =500;

public void onScrollStateChanged(AbsListView view, int scrollState)
{
switch (scrollState)
{
case SCROLL_STATE_FLING:
i++;
Log.i("4444","用户在手指离开屏幕之前,由于用力滑了一下,视图扔依靠惯性继续滑动");
Map<String, Object> map = new HashMap<String,Object>();
map.put("pic", R.mipmap.ic_launcher);
map.put("text", "增加项"+i);
dataList.add(map);
simp_adapter.notifyDataSetChanged();//通知 UI 线程
break;
case SCROLL_STATE_IDLE:
Log.i("4444", "视图已经停止滑动");
break;
case SCROLL_STATE_TOUCH_SCROLL:
Log.i("4444", "手指没有离开屏幕,视图正在滑动");
break;
}
}

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)
{}
}
...全文
430 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
谁学逆向工程 2016-10-07
  • 打赏
  • 举报
回复
引用 5 楼 liuxian13183 的回复:
你适配器里的控件不是可以获得view,获得前不是需要id吗
for 循环出来一堆控件,ID怎么获得
刘兆贤 2016-10-07
  • 打赏
  • 举报
回复
你适配器里的控件不是可以获得view,获得前不是需要id吗
刘兆贤 2016-10-07
  • 打赏
  • 举报
回复
引用 6 楼 xiaoyuanyuan2009 的回复:
[quote=引用 5 楼 liuxian13183 的回复:] 你适配器里的控件不是可以获得view,获得前不是需要id吗
for 循环出来一堆控件,ID怎么获得[/quote] 你要改变哪个ImageView就用哪个id呀;好吧重新看了你的适配器,你需要自定义一个,不要用它提供的,这样ID就明确了。
LoveWyf_ 2016-10-05
  • 打赏
  • 举报
回复
new int专门提取出来。然后修改int数组就是修改图片,再调用adapter的notify方法就行。或者你每次重新setAdapter
谁学逆向工程 2016-10-05
  • 打赏
  • 举报
回复
引用 3 楼 qq_25412055 的回复:
new int专门提取出来。r
提出来怎么获得ID呢,这个数组是不是非得要ID才行?
谁学逆向工程 2016-10-03
  • 打赏
  • 举报
回复
引用 1 楼 liuxian13183 的回复:
给适配器重新设置数据,调用适配器的invalidate方法
没办法找到具体控件啊,上面没办法用 findViewById
刘兆贤 2016-10-03
  • 打赏
  • 举报
回复
给适配器重新设置数据,调用适配器的invalidate方法

80,351

社区成员

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

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