簡體   English   中英

數據未顯示在自定義ListView中

[英]Data is not displaying in custom ListView

我創建了一個自定義列表視圖,該列表視圖從數據庫中獲取數據。 在Toast的幫助下,我能夠看到所有值都正確顯示,但是這些值未在Listview中顯示。 ListViewAdapter類正常工作。 這是我的mainActivity代碼

    public class FamilyInfo extends AppCompatActivity {

    ProgressDialog pDialog;
    ListView lv_fam_memb;
    ArrayList<String>namelist,agelist,edulist,rellist;
    ListViewAdapter listViewAdapter;
    String id;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_family_info);
        Bundle bundle=getIntent().getExtras();
        id=bundle.getString("headid");
        namelist=new ArrayList<>();
        agelist=new ArrayList<>();
        edulist=new ArrayList<>();
        rellist=new ArrayList<>();
        lv_fam_memb=findViewById(R.id.lv_fam_member);
        new GetMydata().execute();
        listViewAdapter=new ListViewAdapter(FamilyInfo.this,namelist,agelist,edulist,rellist);
        lv_fam_memb.setAdapter(listViewAdapter);

    } public class GetMydata extends AsyncTask{
       MyConnection myConnection;
       Connection connection;
       Statement statement;
       ResultSet resultSet;

       @Override
       protected void onPreExecute() {
           super.onPreExecute();
           pDialog = new ProgressDialog(FamilyInfo.this);
           pDialog.setMessage("Please wait...");
           pDialog.setIndeterminate(false);
           pDialog.setCancelable(false);
           pDialog.show();
       }

       @Override
       protected Object doInBackground(Object[] objects) {
           myConnection=new MyConnection();
           connection=myConnection.DatabaseConncetion1();
           try {
               statement=connection.createStatement();
               resultSet=statement.executeQuery("select MEM_NAME,MEM_AGE,MEM_EDU,MEM_REl from FAMILY_NO where HEAD_ID="+id);

           } catch (SQLException e) {
               e.printStackTrace();
           }
           return null;
       }

       @Override
       protected void onPostExecute(Object o) {
           super.onPostExecute(o);
           try {
               while (resultSet.next())
               {
                   namelist.add(resultSet.getString(1));
                   agelist.add(resultSet.getString(2));
                   edulist.add(resultSet.getString(3));
                   rellist.add(resultSet.getString(4));
                  }
               pDialog.dismiss();



           } catch (SQLException e) {
               e.printStackTrace();
           }
       }
   }

}

請告訴我缺少了什么,謝謝:)

您已經在帶有空列表的onCreate()調用了setAdapter() 現在,當您加載數據時,需要在Adapter中調用notifydatasetChanged() 請參見下面的代碼。

@Override
protected void onPostExecute(Object o) {
    super.onPostExecute(o);
    try {
        while (resultSet.next())
        {
            namelist.add(resultSet.getString(1));
            agelist.add(resultSet.getString(2));
            edulist.add(resultSet.getString(3));
            rellist.add(resultSet.getString(4));
        }
        pDialog.dismiss();
        listViewAdapter.notifyDataSetChanged();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

您必須在更改數據后通過notifyDataSetChanged()更改列表數據時通知適配器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM