2015-09-28 45 views
0

我正在为我的ListView使用自定义列表适配器。我的每个列表项目都有4个项目。它们来自listArray。如何从数据库中提取数据并将它们作为ListView查看

这里是从列表数组中拉出列表项的代码。

import android.app.Fragment; 
import android.content.Intent; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ListView; 



import com.rupomkhondaker.sonalibank.adapter.PhoneListAdapter; 
import com.rupomkhondaker.sonalibank.model.ContactItem; 

import java.util.ArrayList; 


public class GMOFragment extends Fragment { 
    public GMOFragment(){} 


    private boolean database; 
    private static final String DB_NAME = "SBLdata.db"; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_gmo, container, false); 

     final ArrayList<ContactItem> listData = getListData(); 

     final ListView listView = (ListView) rootView.findViewById(R.id.gmolistView); 
     listView.setAdapter(new PhoneListAdapter(getActivity(), listData)); 


     DataBaseHelper dataOpen = new DataBaseHelper((MainActivity) getActivity(), DB_NAME); 
     //Trying to open the DataBase 
     database = dataOpen.openDataBase(); 



     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
       ContactItem newsData = (ContactItem) listView.getItemAtPosition(position); 

       Intent intent = new Intent(getActivity(), ContactDetail.class); 

       intent.putExtra("DATA_KEY", newsData); 

       startActivity(intent); 
      } 

     }); 

     return rootView; 
    } 

    private ArrayList<ContactItem> getListData() { 
     ArrayList<ContactItem> listMockData = new ArrayList<ContactItem>(); 


     String sqlQuery = "select BR_NAME,PHONE,MOBILE,EMAIL from SBL_Contact"; 
     Cursor contactsCursor = database.rawQuery(sqlQuery, null); 

     ContactItem newsData = null; 

     while (contactsCursor.moveToNext()) { 
      newsData = new ContactItem(); 
      newsData.setName(contactsCursor.getString(0)); 
      newsData.setPhone(contactsCursor.getString(1)); 
      newsData.setMobile(contactsCursor.getString(2)); 
      newsData.setEmail(contactsCursor.getString(3)); 

      listMockData.add(newsData); 
     } 
     return listMockData; 
    } 

} 

,但现在我已经在SBL_Contact(表名)列1.NAME,2.PHONE,3.MOBILE创造了我的SBLdata(databse_name)相同的列表,4.EMAIL

现在请大家帮帮忙我拉的数据,并将其设置为getListData()

+0

你想从DB而不是R.array数据? –

+0

是的,你是对的。我的上面的代码与R.array一起工作完美,但我需要在'Cursor contactsCursor = database.rawQuery(sqlQuery,null)'中使用DB – Firefog

回答

0

您可以创建一个SQL查询如:

String sqlQuery = "select name,phone,mobile,email from SBL_Contact"; 

然后用光标用它来得到结果:

Cursor contactsCursor = database.rawQuery(sqlQuery, null); 

,然后通过你的光标迭代:

ContactItem newsData = null; 

while (contactsCursor.moveToNext()) { 
     newsData = new ContactItem(); 
     newsData.setName(contactsCursor.getString(0)); 
     newsData.setPhone(contactsCursor.getString(1)); 
     newsData.setMobile(contactsCursor.getString(2)); 
     newsData.setEmail(contactsCursor.getString(3)); 

     listMockData.add(newsData); 
    } 
+0

;'为什么rawQuery显示红色下划线? – Firefog

+0

你收到什么信息? –

+0

当我鼠标悬停它“不能解决的方法rawQuery(.........”这样的事情 – Firefog

相关问题