Я создал Listfragment, который отображает список видов. Здесь ListFragment:Исключение Nullpointer при попытке доступа к дочерним элементам ListView
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. И я получил исключение NullPointerException, когда я вызываю getChildAt (int). Зачем ? Я имею в виду, я вызываю ListView AFTER onCreateView, а затем просто хочу: взять дочерний вид этого 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);
}
}
Если вам нужно больше кода (как Wich активности отображает фрагмент или другой материал), или информацию, скажем, его me :)
Вы видели кого-то структуру кода? потому что из того, что я помню (может быть, неправильно), listview не поддерживает некоторые функции viewgroup..right? да, позвольте мне посмотреть – Elltz
Я не совсем понимаю ваш комментарий. Фактически, я использовал этот учебник для этого: http: //wptrafficanalyzer.in/blog/android-listfragment-with-images-and-text-using-android-support-library/ Но факт в том, что я хочу изменить изображения после помещения их в список –