这是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;}

解决方案 »

  1.   

    fragment没有创建实例关联Activity吧,你在onCreateView断点看下
      

  2.   

    前面没仔细看
    @Override
        public int getCount() {
            return 0;   ------不应该是list.size? 0的话会显示数据?
        }
      

  3.   

    不行啊  老哥我确实是忘记读出  list.size()  但是我输出了这个 东西 还是不行  能读出数据长度  不显示数据这是主要错误      Process: com.example.administrator.jieketext, PID: 14949
        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());
      

  4.   

    adapter有问题,再详细了解一下,重写的方法应该和list关联一下吧
      

  5.   

    getView()里面ViewHolder写错了
     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;
        }
      

  6.   

    老哥我按你的写了 不行,然后我把那两个对应的错误项删除了

    { viewHolder.imageView.setBackgroundResource(R.drawable.ic_launcher_background);
            viewHolder.textView.setText(list.get(i).get("textname").toString()); 
    }
    这两行使劲报错 然后删除了   出来字了,但是我感觉还是不对  感觉上面viewholder 跟没有用到一样,我XML文件里面写的有个text,然后 删除那两行东西出来后的东西相当于把那个text文本循环了三遍
      

  7.   

    public class TestActivity extends Activity {
        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;    }
    }
      

  8.   

    这个我知道但是我 那个是要写在fragment 中的 所以那里  的东西extends  继承的是Fragment
      

  9.   

    只要Adapter没问题,ListView在Activity或者Fragment展示数据有什么区别
    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都没有创建,怎么可能有数据显示
      

  10.   

    @Override
        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();// 写错了