2015-04-21 62 views
0

我有一個過程,用戶選擇一個城市,然後看到該州的醫生。Android ListView,從列表視圖中添加數據庫中的項目

我有結果,展示了醫療實踐的名字:

@Override 
    protected void onResume() { 
     super.onResume(); 

     setProgressBarIndeterminateVisibility(true); 

     Bundle b = getIntent().getExtras(); 



     final String[] resultArr = b.getStringArray("selectedItems"); 

     String location = b.getString("selectedItems"); 



     ParseQuery<ParseUser> query = ParseUser.getQuery(); 

     query.orderByAscending(ParseConstants.KEY_PRACTICE_NAME); 

     query.findInBackground(new FindCallback<ParseUser>() { 
      @Override 
      public void done(List<ParseUser> users, ParseException e) { 
       setProgressBarIndeterminateVisibility(false); 

       if (e == null) { 
        // Success 
        //store users variable in Parse to mMidwifeLocations 
        mMidwives = users; 
        mCurrentUser = ParseUser.getCurrentUser(); 
        //mMidwifeType = ParseUser.getString("usertype"); 

        //store users in string array, locations 
        String[] midwives = new String[mMidwives.size()]; 
        String[] locations = new String[mMidwives.size()]; 
        String check; 
        String location; 

        int i = 0; 
        for(ParseUser user : mMidwives) { 
         //get city value from user, assign it to check variable 

         location = user.getString("city"); 

         check = user.getString("userType"); 

         if (!Arrays.asList(midwives).contains(check) && type != "patient" && Arrays.asList(resultArr).contains(location)) { 

          //in locations array, assign practiename values 
           midwives[i] = user.getString("practicename"); 


         } 
        } 
        i++; 

我也想在列表中返回的主要聯繫人,地址,和實踐philosophy..what是做到這一點的最佳策略?我正在使用一個simple_list_item_1列表類型...還有其他列表類型...想知道是否使用其中的一個可能是答案..預先感謝..

回答

0

首先,您可能想要做所有這些在onCreate()方法中。

林不知道這是你想要的,但從我明白我寫這個。

我會親自寫下所有你在一個字符串數組所需的數據在strings.xml

<string-array name="string_array"> 
<item name ="item1"> item1 </item> 
....... 
</string-array> 

那我就只抓這些數據和什麼樣的順序您的狀態是它的排序順序所以他們會匹配。但通過看看你做了什麼,你已經做到了這一點輕鬆

然後創建一個自定義佈局分配每個字符串。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" android:layout_height="wrap_content"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="Large Text" 
    android:id="@+id/textView" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
</RelativeLayout> 

更改此佈局您希望如何查看您的數據,還可以添加更多的文字瀏覽到您需要的數量。

現在您需要爲此列表視圖創建一個適配器。

class adapter extends BaseAdapter { 

    ArrayList<SingleRow> arrayList; 
    Context context; 

    adapter(Context contxt) { 
     context = contxt; 
     arrayList = new ArrayList<SingleRow>(); 
     Resources res = contxt.getResources(); 
     String[] items= res.getStringArray(R.array.string_array); 

     for (int i = 0; i < 1; i++) {//Change the 1 in i < 1 to how big your list is. 
      arrayList.add(new SingleRow(items[i])); 
     } 

    } 

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

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

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

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row = inflater.inflate(R.layout.items_layout, parent, false); 
     TextView item1 = (TextView) row.findViewById(R.id.txtItem1); 
     SingleRow temp = arrayList.get(position); 
     items.setText(temp.items); 

     return row; 
    } 
} 

class SingleRow { 
    String items; 
    SingleRow(String items) { 
     this.items = items; 

    } 
} 

閱讀代碼並對其進行分析,你會弄清楚如何將數據添加到textviews的每一行項目,並通過你將需要多少這樣做之後。現在

你將不得不...

ListView listView = (ListView) findViewById(R.id.itemListView); 
listView.setAdapter(new adapter(getActivity())); 

設置適配器列表視圖現在,你應該能夠使自定義列表視圖佈局。如果發生任何問題,請評論這個答案,並試圖修復它。

祝你好運。

+0

只是爲了澄清;現在我正在通過之前活動中選擇的一個城市,並且在OnResume中,我循環搜索數據以查找所選城市中的所有醫療實踐,並且適配器將此結果推送至列表視圖...您的解決方案在此處似乎有一個適配器從不是列表視圖的佈局中獲取信息,但將該佈局轉換爲列表視圖?我仍然希望查詢限制結果。所以我會把適配器代碼放在我有我的當前適配器的地方,現在只需要根據城市提取練習名稱? –

+0

我想通了,但萬一其他人搜索想要詳細描述這個,這是一個很好的來源https://github.com/codepath/android_guides/wiki/Using-an-ArrayAdapter-with-ListView –

相關問題