2015-01-07 2 views
0

어떻게 개체의 Arraylist를 어댑터로 전달한 다음 목록 뷰로 전달합니까? 그룹의 속성 인 그룹 이름을 목록보기로 전달하려고합니다. 가능하다면 ID를 값으로 전달하고 싶습니다 (클릭 한 경우).안드로이드의 ListView 및 배열 어댑터

private void populateList(){ 

     // Enable Local Datastore. 

     Parse.enableLocalDatastore(this); 

     ParseObject.registerSubclass(Group.class); 

     //PARSE INITI REMOVED 

     ParseQuery<ParseObject> query = ParseQuery.getQuery("Group"); 
     // query.whereEqualTo("playerName", "Dan Stemkoski"); 
     query.findInBackground(new FindCallback<ParseObject>() { 
      public void done(List<ParseObject> scoreList, ParseException e) { 
       if (e == null) { 
        Log.d("Name", "Retrieved " + scoreList.size() + " groups"); 

        for (ParseObject gGroup : scoreList) { 
         Log.d("Name", "Retrieved " + gGroup.toString() + " groups"); 
         Group newGroup = new Group(); 
         newGroup.setName(gGroup.toString()); 

         listGroups.add(newGroup); 


        } 




       } else { 
        Log.d("Name", "Error: " + e.getMessage()); 
       } 
      } 
     }); 

     //build 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.da_list,R.id.name,listGroups); 

     //list 
     ListView mGroups = (ListView) findViewById(R.id.uiGroups); 

     mGroups.setAdapter(adapter); 

    } 

XML보기 당신은 당신의 자신의 어댑터를 만들 필요가

<?xml version="1.0" encoding="utf-8"?> 
<ListMenuItemView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <!-- The title and summary have some gap between them, and this 'group' should be centered vertically. --> 
    <RelativeLayout 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:duplicateParentState="true"> 

     <TextView 
      android:id="@+id/name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:textAppearance="?android:attr/textAppearanceLargePopupMenu" 
      android:singleLine="true" 
      android:duplicateParentState="true" 
      android:ellipsize="marquee" 
      android:fadingEdge="horizontal" /> 

    </RelativeLayout> 
</ListMenuItemView> 
+0

BaseAdapter 또는 ArrayAdapter를 확장하여 자신의 어댑터를 작성하거나 디자인을 단순화하려면 사전 정의 된 어댑터를 사용해야합니다. 더 나은 지침을 보려면이 자습서를 따르십시오. http://androidexample.com/How_To_Create_A_Custom_Listview_-_Android_Example/index.php?view=article_discription&aid=67&aaid=9 – Shahzeb

+0

BaseAdapter를 확장 한 사용자 정의 어댑터를 작성하고 List를 해당 어댑터로 전달하십시오. 참조 - http://theopentutorials.com/tutorials/android/listview/android-custom-listview-with-image-and-text-using-baseadapter/ –

+0

예, BaseAdapter를 확장하는 자체 어댑터를 작성해야합니다. – droidd

답변

0

. 골격은 다음과 같습니다

public class MySimpleArrayAdapter extends ArrayAdapter<Group> { 

    private Context mContext; 
    private ArrayList<Group> mGroup; 

    public MySimpleArrayAdapter(Context context, ArrayList<Group> group) { 

     mContext = context; 
     mGroup = group; 
    } 

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

     LayoutInflater inflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rowView = inflater.inflate(R.layout.rowlayout, parent, false); 

     TextView textView = (TextView) rowView.findViewById(R.id.text); 
     textView.setText(mGroup.get(position).getGroupName()); 
     return rowView; 
    } 
} 

:이 어댑터가있는 ListView의 관리 계정 가능한 개선을 고려하지 않습니다. 더 정밀이 링크를 보면 : http://developer.android.com/training/improving-layouts/smooth-scrolling.html

R.layout.rowlayout가 같은 것입니다 장소 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp"> 

    <TextView android:id="@+id/text" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:textSize="14sp" /> 

</LinearLayout> 

지금 당신은 당신의 ListView에이 어댑터를 설정해야합니다 :

ListView listView = (ListView) findViewById(R.id.listView); 
MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(getActivity().getApplicationContext(), groupArrayList); 
listView.setAdapter(adapter); 

이 좋은 하루 되세요!