【发布时间】:2015-02-05 10:56:32
【问题描述】:
我创建了一个 Listfragment,它显示了一个视图列表。 这是 ListFragment :
public class AroundYou extends ListFragment {
private int[] images = new int[] {
R.drawable.pinguin,
R.drawable.pinguin,
R.drawable.pinguin,
R.drawable.pinguin,
R.drawable.pinguin,
R.drawable.pinguin,
R.drawable.pinguin,
R.drawable.pinguin,
R.drawable.pinguin,
R.drawable.pinguin
};
private String[] names = new String[] {
"Pingu",
"Pingu",
"Pingu",
"Pingu",
"Pingu",
"Pingu",
"Pingu",
"Pingu",
"Pingu",
"Pingu"
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// Each row in the list stores country name, currency and flag
List<HashMap<String,String>> aList = new ArrayList<HashMap<String,String>>();
for(int i=0;i<10;i++){
HashMap<String, String> hm = new HashMap<String,String>();
hm.put("name", names[i]);
hm.put("image",Integer.toString(images[i]));
aList.add(hm);
}
// Keys used in Hashmap
String[] from = { "name","image"};
// Ids of views in listview_layout
int[] to = { R.id.name,R.id.image};
// Instantiating an adapter to store each items
// R.layout.listview_layout defines the layout of each item
SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList, R.layout.around_you_line_of_list, from, to);
setListAdapter(adapter);
return super.onCreateView(inflater, container, savedInstanceState);
}
}
ListView 的每一行显示一个图像和一个文本。目前它是相同的图像/文本,但我稍后会放置不同的图像/文本。 一行的xml文件是 around_you_line_of_list.xml :
<?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="horizontal" >
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
android:contentDescription="@string/hello_world"
android:paddingBottom="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" />
<TextView
android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
这很好用。但是,我想在 ListFragment 中修改 ListView 每一行的图像。所以我在函数 onActivityCreated 中做到了。当我调用 getChildAt(int) 时,我得到了 NullPointerException。为什么 ? 我的意思是,我在 onCreateView 之后调用 ListView,然后我只想:获取此 ListView 的子视图,获取此子视图的图像视图,修改图像视图。
如何访问子视图?...
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
ListView listView = getListView();
for(int i = 0;i < 10;i++){
//I'm getting a null pointer exception at this line .
View view = listView.getChildAt(i);
ImageView imageview = (ImageView) view.findViewById(R.id.image);
BitmapDrawable drawable = (BitmapDrawable)imageview.getDrawable();
//here I 'm getting a bitmap from the drawable, and then applying a function that modify
//the bitmap .
Bitmap foreign_image = drawable.getBitmap();
Canvas canvas = null;
Bitmap bitmap = setBitmapClippedCircle(foreign_image,200,200,canvas);
//here I'm putting the result in the imageview .
imageview.setImageBitmap(bitmap);
}
}
如果您需要更多代码(例如显示片段或其他内容的活动)或信息,请告诉我 :)
【问题讨论】:
-
你见过有人这样的代码结构吗?因为据我记得(我可能错了),listview 不支持某些视图组功能..对吗?是的,让我看看
-
我不太明白你的评论。其实我是用这个教程来做的:wptrafficanalyzer.in/blog/… 但事实是,我想把图片放入列表后修改
标签: android android-listview android-listfragment