2016-05-27 6 views
2

カスタムアダプタを使用して、画像、タイトル、タイトルの下の各リスト項目内のN個の個別文字列を持つリスト項目を表示します。ArrayListからカスタムアダプタにテキストビューを動的に追加する

各リスト項目のcom.google.android.flexbox.FlexboxLayout内に都市タイトルのN個のTextViewを実装するにはどうすればよいですか? TextViewsのN量はArrayList<City>

public City (String city, int id) { 
     this.city = city; 
     this.id = id; 
} 

おかげから来ています!

Problem visualization here

アダプタ:

public class PersonAdapter extends ArrayAdapter<Person> { 

    private ArrayList<City> cities; 

    public PersonAdapter(Context context, ArrayList<Person> persons) { 
     super(context, 0, persons); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Hole Daten für diese Position 
     Person person = getItem(position); 

     cities = person.getCities(); 

     if (convertView == null) { 

      convertView = LayoutInflater.from(getContext()) 
    .inflate(R.layout.list_explore_people_row, parent, false); 
     } 

     TextView personName = (TextView) convertView.findViewById(R.id.listItemExplorePeopleName); 
     ImageView profileImg = (ImageView) convertView.findViewById(R.id.listItemExplorePeopleImg); 
     TextView profileCity = (TextView) convertView.findViewById(R.id.listItemExplorePeopleCityItem); 

     personName.setText(person.getName()); 
     profileCity.setText(person.getCities().toString()); //This is my best progress currently 
     profileImg.setImageBitmap(getBitmap(getContext(), person.getProfileImg())); 

     return convertView; 
    } 

    public Bitmap getBitmap(Context ctx, String profileFilename) { 
    ...code of getBitmap for image 
    } 
} 

PersonAdapterためのXMLレイアウト(R.layout.list_explore_people_row)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorWhite" 
    android:paddingBottom="@dimen/list_row_vertical_margin" 
    android:paddingLeft="@dimen/list_row_horizontal_margin" 
    android:paddingRight="@dimen/list_row_horizontal_margin" 
    android:paddingTop="@dimen/list_row_vertical_margin"> 

    <ImageView 
     android:id="@+id/listItemExplorePeopleImg" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="0dp" 
     android:minHeight="100dp" 
     android:minWidth="100dp" 
     android:scaleType="centerCrop" 
     android:src="@drawable/profileimg1" /> 

    <TextView 
     android:id="@+id/listItemExplorePeopleName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_marginBottom="2dp" 
     android:layout_toEndOf="@+id/listItemExplorePeopleImg" 
     android:ellipsize="end" 
     android:singleLine="true" 
     android:text="Mona" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <com.google.android.flexbox.FlexboxLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/listItemExplorePeopleName" 
     android:layout_toEndOf="@+id/listItemExplorePeopleImg" 
     app:flexWrap="wrap" 

     android:layout_alignParentEnd="true" 
     android:id="@+id/include"> 

     <TextView 
      android:id="@+id/listItemExplorePeopleCityItem" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="city one" 
      android:background="@android:color/holo_green_light"></TextView> 

    </com.google.android.flexbox.FlexboxLayout> 

答えて

1
for(City city : cities) { 
    TextView textView = new TextView(this); 
    textView.setText(person.getCities().toString()); 
    convertView.addView(textView); 
} 

私は、現在、私のメインPCの近くにいませんよ私は実際にそれを確認することはできませんが、その考え方は大体です。もっとこれを確認するために :Android dynamically add views

+0

私は_personName.setText(person.getName())の下に私のgetViewメソッドの内部であなたの答えを置く; _しかし_java.lang.UnsupportedOperationException:addView(ビュー)はAdapterView_でサポートされていませんがアップします。 – cosmorunner

+0

あなたは何か進歩があったら教えてください、今私はそれを試してみるつもりです。 –

+0

実際には、アダプタ内でビューを動的に追加し、それらを 'com.google.android.flexbox.FlexboxLayout'レイアウトに追加する方法を理解できません。 _addView()_はそこで受け入れられません。トリッキー! – cosmorunner

関連する問題