这是Fragment Java代码
package com.example.administrator.jieketext;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;import com.example.administrator.jieketext.Adapter.FragmentOneAdapter;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class FirstFragment extends Fragment { ListView listView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
return view;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
listView = getView().findViewById(R.id.listview);
FragmentOneAdapter productAdapter = new FragmentOneAdapter(getActivity(),getData());
listView.setAdapter(productAdapter);
}
public List<Map<String,Object>> getData(){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("textname"," 111");
map1.put("image",R.drawable.ic_launcher_foreground);
list.add(map1);
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("textname"," 111");
map2.put("image",R.drawable.ic_launcher_foreground);
list.add(map2);
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("textname"," 111");
map3.put("image",R.drawable.ic_launcher_foreground);
list.add(map3);
return list;
}
}这是绑定的适配器代码
package com.example.administrator.jieketext.Adapter;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;import com.example.administrator.jieketext.R;import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class FragmentOneAdapter extends BaseAdapter { private List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); private LayoutInflater inflater;
Button button; public FragmentOneAdapter(Context context, List<Map<String,Object>> list){
super();
this.list = list;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return 0;
} @Override
public Object getItem(int i) {
return null;
} @Override
public long getItemId(int i) {
return 0;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder = null;
if(view == null){
view = inflater.inflate(R.layout.listview_one,null);
viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) view.findViewById(R.id.image);
viewHolder.textView = (TextView) view.findViewById(R.id.textname);
viewHolder.button = (Button) view.findViewById(R.id.buybutton);
}else{
view.setTag(viewHolder);
}
viewHolder.imageView.setBackgroundResource(R.drawable.ic_launcher_background);
viewHolder.textView.setText(list.get(i).get("textname").toString());
return view;
}
}这是内容提供的代码
package com.example.administrator.jieketext.Adapter;import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;public class ViewHolder {
public TextView textView;
public ImageView imageView;
public Button button;}
package com.example.administrator.jieketext;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;import com.example.administrator.jieketext.Adapter.FragmentOneAdapter;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class FirstFragment extends Fragment { ListView listView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
return view;
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
listView = getView().findViewById(R.id.listview);
FragmentOneAdapter productAdapter = new FragmentOneAdapter(getActivity(),getData());
listView.setAdapter(productAdapter);
}
public List<Map<String,Object>> getData(){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map1 = new HashMap<String,Object>();
map1.put("textname"," 111");
map1.put("image",R.drawable.ic_launcher_foreground);
list.add(map1);
Map<String,Object> map2 = new HashMap<String,Object>();
map2.put("textname"," 111");
map2.put("image",R.drawable.ic_launcher_foreground);
list.add(map2);
Map<String,Object> map3 = new HashMap<String,Object>();
map3.put("textname"," 111");
map3.put("image",R.drawable.ic_launcher_foreground);
list.add(map3);
return list;
}
}这是绑定的适配器代码
package com.example.administrator.jieketext.Adapter;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;import com.example.administrator.jieketext.R;import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class FragmentOneAdapter extends BaseAdapter { private List<Map<String,Object>> list = new ArrayList<Map<String,Object>>(); private LayoutInflater inflater;
Button button; public FragmentOneAdapter(Context context, List<Map<String,Object>> list){
super();
this.list = list;
inflater = LayoutInflater.from(context);
}
@Override
public int getCount() {
return 0;
} @Override
public Object getItem(int i) {
return null;
} @Override
public long getItemId(int i) {
return 0;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder = null;
if(view == null){
view = inflater.inflate(R.layout.listview_one,null);
viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) view.findViewById(R.id.image);
viewHolder.textView = (TextView) view.findViewById(R.id.textname);
viewHolder.button = (Button) view.findViewById(R.id.buybutton);
}else{
view.setTag(viewHolder);
}
viewHolder.imageView.setBackgroundResource(R.drawable.ic_launcher_background);
viewHolder.textView.setText(list.get(i).get("textname").toString());
return view;
}
}这是内容提供的代码
package com.example.administrator.jieketext.Adapter;import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;public class ViewHolder {
public TextView textView;
public ImageView imageView;
public Button button;}
解决方案 »
- android生成动态数据表格的问题
- Android实现双网卡同时上网
- 急~~请教!如何向SDK中加入自定义的类?
- java源码 实现网页更新
- 哪位高手指导怎么修改相机拍照保存图片会逆时针旋转90度的问题啊 谢谢了 内附部分代码。。
- android4.0如何关闭logcat功能(帮顶也给分)
- android开发中Caused by: java.lang.NullPointerException
- 关于Android屏幕适配,为什么会出现这种情况,默认布局不起作用??
- ubuntu下socket出现的问题
- 第一次发帖就是求助帖,不知道有人能解决一下不
- Didn't find class "android.support.v4.content.FileProvider" on path
- 怎么获取屏幕上的控件信息?
@Override
public int getCount() {
return 0; ------不应该是list.size? 0的话会显示数据?
}
java.lang.NullPointerException: Attempt to read from field 'android.widget.ImageView com.example.administrator.jieketext.Adapter.ViewHolder.imageView' on a null object reference
at com.example.administrator.jieketext.Adapter.FragmentOneAdapter.getView(FragmentOneAdapter.java:61)
错误的地方在 viewHolder.imageView.setBackgroundResource(R.drawable.ic_launcher_background);
viewHolder.textView.setText(list.get(i).get("textname").toString());
ViewHolder viewHolder = null;
if(view == null){
view = inflater.inflate(R.layout.listview_one,null);
viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) view.findViewById(R.id.image);
viewHolder.textView = (TextView) view.findViewById(R.id.textname);
viewHolder.button = (Button) view.findViewById(R.id.buybutton); view.setTag(viewHolder); <-----------
}else{
viewHolder= (ViewHolder) view.getTag(); <------------
}
viewHolder.imageView.setBackgroundResource(R.drawable.ic_launcher_background);
viewHolder.textView.setText(list.get(i).get("textname").toString());
return view;
}
{ viewHolder.imageView.setBackgroundResource(R.drawable.ic_launcher_background);
viewHolder.textView.setText(list.get(i).get("textname").toString());
}这两行使劲报错 然后删除了 出来字了,但是我感觉还是不对 感觉上面viewholder 跟没有用到一样,我XML文件里面写的有个text,然后 删除那两行东西出来后的东西相当于把那个text文本循环了三遍
private ListView listView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
listView = findViewById(R.id.listView);
FragmentOneAdapter productAdapter = new FragmentOneAdapter(this, getData());
listView.setAdapter(productAdapter);
} public List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("textname", " 111");
map1.put("image", R.drawable.ic_launcher);
list.add(map1);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("textname", " 111");
map2.put("image", R.drawable.ic_launcher);
list.add(map2);
Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("textname", " 111");
map3.put("image", R.drawable.ic_launcher);
list.add(map3);
return list;
}
}public class FragmentOneAdapter extends BaseAdapter {
private List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); private LayoutInflater inflater;
Button button; public FragmentOneAdapter(Context context, List<Map<String, Object>> list) {
super();
this.list = list;
inflater = LayoutInflater.from(context);
} @Override
public int getCount() {
return list.size();
} @Override
public Object getItem(int i) {
return null;
} @Override
public long getItemId(int i) {
return 0;
} @Override
public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder viewHolder = null;
if (view == null) {
view = inflater.inflate(R.layout.listview_one, null);
viewHolder = new ViewHolder();
viewHolder.imageView = (ImageView) view.findViewById(R.id.image);
viewHolder.textView = (TextView) view.findViewById(R.id.textname);
viewHolder.button = (Button) view.findViewById(R.id.buybutton);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.imageView.setBackgroundResource(R.drawable.ic_launcher);
viewHolder.textView.setText(list.get(i).get("textname").toString());
return view;
} public class ViewHolder {
private TextView textView;
private ImageView imageView;
private Button button; }
}
Fragment里面也给你试了,没问题
public class FragmentTest extends Fragment {
private ListView listView; @Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Log.e(TAG,"onCreateView");
View view = inflater.inflate(R.layout.test, container, false);
listView = view.findViewById(R.id.listView);
init();
return view;
} private void init() {
FragmentOneAdapter productAdapter = new FragmentOneAdapter(getActivity(), getData());
listView.setAdapter(productAdapter);
} private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map1 = new HashMap<String, Object>();
map1.put("textname", " 111");
map1.put("image", R.mipmap.ic_launcher);
list.add(map1);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("textname", " 222");
map2.put("image", R.mipmap.ic_launcher);
list.add(map2);
Map<String, Object> map3 = new HashMap<String, Object>();
map3.put("textname", " 333");
map3.put("image", R.mipmap.ic_launcher);
list.add(map3);
return list;
}
你看下Log有输出没,没有的话就是你Fragment都没有创建,怎么可能有数据显示
public View getView(int i, View view, ViewGroup viewGroup) { ImageView imageView;
TextView textView;
if(view == null){
view = inflater.inflate(R.layout.listview_one,null);
}
imageView = (ImageView) view.findViewById(R.id.image);
textView = (TextView) view.findViewById(R.id.textname);
//button = (Button) view.findViewById(R.id.buybutton); imageView.setBackgroundResource(R.drawable.ic_launcher_background);
textView.setText(list.get(i).get("textname").toString());
return view;
}viewHolder = new ViewHolder();// 写错了