ListView项目不显示数据库中的值

时间:2017-11-30 06:38:49

标签: android mysql listview android-fragments

我创建了一个项目来显示片段中的ListView项目。 ListView来自MySql数据库

这是片段

中的代码
    public class MemberFragment extends Fragment {
    public static MemberFragment newInstance() {
        MemberFragment fragment = new MemberFragment();
        return fragment;
    }
    ListView StudentListView;
    ProgressBar progressBar;
    String HttpUrl = "http://192.168.43.241/Android/MyKoperasi/SemuaMember.php";
    List<String> IdList = new ArrayList<>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_member, container, false);
        //SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
        //namapegawai = prefs.getString(MainActivity.UserName,MainActivity.UserName);
        getActivity().setTitle("Daftar Member");
        setHasOptionsMenu(true);

        StudentListView = v.findViewById(R.id.listview1);
        progressBar = v.findViewById(R.id.progressBar);
        new GetHttpResponse(getActivity()).execute();
        //Adding ListView Item click Listener.
        StudentListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                // TODO Auto-generated method stub
                //Intent intentSemuaMemberLihat = new Intent(getActivity(),SemuaMemberLihat.class);
                // Sending ListView clicked value using intent.
                //intentSemuaMemberLihat.putExtra("ListViewValue", IdList.get(position).toString());
                //startActivity(intentSemuaMemberLihat);
            }
        });

        return v;
    }

    // JSON parse class started from here.
    private class GetHttpResponse extends AsyncTask<Void, Void, Void>
    {
        public Context context;

        String JSonResult;

        List<Member> studentList;

        public GetHttpResponse(Context context)
        {
            this.context = context;
        }

        @Override
        protected void onPreExecute()
        {
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... arg0)
        {
            // Passing HTTP URL to HttpServicesClass Class.
            HttpServicesClass httpServicesClass = new HttpServicesClass(HttpUrl);
            try
            {
                httpServicesClass.ExecutePostRequest();

                if(httpServicesClass.getResponseCode() == 200)
                {
                    JSonResult = httpServicesClass.getResponse();

                    if(JSonResult != null)
                    {
                        JSONArray jsonArray = null;

                        try {
                            jsonArray = new JSONArray(JSonResult);

                            JSONObject jsonObject;
                            Member member;
                            studentList = new ArrayList<Member>();

                            for(int i=0; i<jsonArray.length(); i++)
                            {
                                member = new Member();
                                jsonObject = jsonArray.getJSONObject(i);

                                // Adding Student Id TO IdList Array.
                                IdList.add(jsonObject.getString("id").toString());
                                //Adding Student Name.
                                member.nama = jsonObject.getString("nama").toString();
                                member.nrp = jsonObject.getString("nrp").toString();
                                studentList.add(member);
                            }
                        }
                        catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
                else
                {
                    Toast.makeText(context, httpServicesClass.getErrorMessage(), Toast.LENGTH_SHORT).show();
                }
            }
            catch (Exception e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result)

        {
            progressBar.setVisibility(View.GONE);
            StudentListView.setVisibility(View.VISIBLE);

            if(studentList != null) {
                ListAdapterClass adapter = new ListAdapterClass(studentList, context);
                StudentListView.setAdapter(adapter);
            }else
            {
                Toast.makeText(context, "Tidak ada data ditampilkan", Toast.LENGTH_SHORT).show();
            }

        }
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
        // Inflate the menu; this adds items to the action bar if it is present.
        inflater.inflate(R.menu.menu_tambah_user, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }



    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case R.id.action_tambah_member_baru:
                Intent intentMemberBaru = new Intent(getActivity(), MemberBaru.class);
                Toast.makeText(getActivity(),"Menambahkan member baru", Toast.LENGTH_SHORT).show();
                startActivity(intentMemberBaru);
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

这是我的类适配器

public class ListAdapterClass extends BaseAdapter {

    Context context;
    List<Member> valueList;
    public ListAdapterClass(List<Member> listValue, Context context)
    {
        this.context = context;
        this.valueList = listValue;
    }

    @Override
    public int getCount()
    {
        return this.valueList.size();
    }

    @Override
    public Object getItem(int position)
    {
        return this.valueList.get(position);
    }

    @Override
    public long getItemId(int position)
    {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        ViewItem viewItem = null;

        if(convertView == null)
        {
            viewItem = new ViewItem();

            LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

            convertView = layoutInfiater.inflate(R.layout.listview_item, null);

            viewItem.TextViewNama = convertView.findViewById(R.id.textViewNama);
            viewItem.TextViewNrp = convertView.findViewById(R.id.textViewNrp);

            convertView.setTag(viewItem);
        }
        else
        {
            //viewItem = convertView.getTag();
        }
        return convertView;
    }
}

class ViewItem
{
    TextView TextViewNama, TextViewNrp;

}

还有我的会员功能

public class Member {
    public String nama;
    public String nrp;
}

所有代码在我的设备中运行时都有效,但关于ListView项目只显示

  

产品

     

产品

     

产品

     

产品

没有值显示,

在我的数据库中我有这个表

|id | nama    |   nrp|
======================
| 1 | Bekti   | 0023 |
| 2 | Puja    | 0090 |
| 3 | Pratama | 1020 |
| 4 | winda   | 9023 |

感谢您帮我修复此代码

2 个答案:

答案 0 :(得分:1)

您未在适配器Views方法中将值设置为getView(),请使用以下方法替换适配器getView()

 @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        ViewItem viewItem = null;

        if(convertView == null)
        {
            viewItem = new ViewItem();

            LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

            convertView = layoutInfiater.inflate(R.layout.listview_item, null);

            viewItem.TextViewNama = convertView.findViewById(R.id.textViewNama);
            viewItem.TextViewNrp = convertView.findViewById(R.id.textViewNrp);

            convertView.setTag(viewItem);
        }
        else
        {
            viewItem = (ViewItem) convertView.getTag();
        }
         Member member = valueList.get(position);
         viewItem.TextViewNama.setText(member.nama);
         viewItem.TextViewNrp.setText(member.nrp);
        return convertView;
    }

答案 1 :(得分:0)

像这样替换你的适配器getView()

 @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            ViewItem viewItem = null;

            if(convertView == null)
            {
                viewItem = new ViewItem();

                LayoutInflater layoutInfiater = (LayoutInflater)this.context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

                convertView = layoutInfiater.inflate(R.layout.listview_item, null);

                viewItem.TextViewNama = convertView.findViewById(R.id.textViewNama);
                viewItem.TextViewNrp = convertView.findViewById(R.id.textViewNrp);

                convertView.setTag(viewItem);
            }
            else
            {
                //viewItem = convertView.getTag();
            }

           Member member = (Member) getItem(position);

            viewItem.TextViewNama.setText(rowItem.nama);
            viewItem.TextViewNrp.setText(rowItem.nrp);

            return convertView;
        }