2016-11-29 23 views
0

私は1つのtextviewでリストビューを持っていて、2番目のtextviewを追加したいと思います。しかし、私はアダプターを変更する方法を理解することはできませんし、私の主な活動でそれを呼び出すことはできません。私CustomAdapter.javaは今2番目のtextviewをcustomAdapterに追加ListView

class CustomAdapter extends ArrayAdapter<CharSequence>{ 

    public CustomAdapter(Context context, CharSequence[] routes) { 
     super(context, R.layout.custom_row ,routes); 
    } 

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

    LayoutInflater routeInflater = LayoutInflater.from(getContext()); 
    View customView = convertView; 
    if(customView == null){customView = routeInflater.inflate(R.layout.custom_row, parent, false);} 

    CharSequence singleRoute = getItem(position); 
    TextView routeText = (TextView) customView.findViewById(R.id.routeText); 
    routeText.setText(singleRoute); 

    ///// Textview I want to add 
    CharSequence routeNum = getItem(position); 
    TextView routeNumText = (TextView) customView.findViewById(R.id.numbersTextView); 
    routeNumText.setText(routeNum); 
    ///// 
    return customView; 

とHERESに私のMainActivity.javaですか

相続人

///// fill listview numbers I want to add 
    final String[] routeListviewNumbers = getResources().getStringArray(R.array.routeNumbers); 
    //fill list view with xml array of routes 
    final String[] routeListViewItems = getResources().getStringArray(R.array.routeList); 

    //custom adapter for list view 
    ListAdapter routeAdapter = new CustomAdapter(this, routeListViewItems); 
    final ListView routeListView = (ListView) findViewById(R.id.routeListView); 
    routeListView.setAdapter(routeAdapter); 

アダプタを変更し、次のようになり、メインの活動でそれを呼び出す方法で任意のヘルプ本当に感謝。ありがとうございました!

+0

アプリを実行するとどうなりますか?これはあなたが望むものとどのように違うのですか? –

答えて

1

カスタムのルートクラスを作成することをお勧めします。これは、このアダプタが1つの配列を処理するためです。 getterメソッドとsetterメソッドを使用して、ルート番号のメンバー変数をいくつか作成し、新しいクラスのアイテムをルーティングします。次に、主なアクティビティーにRouteオブジェクトの新しい配列リストを作成し、既存の文字列配列を反復しながら新しい配列に新しいRouteオブジェクトとして追加することができます。

CharSequenceではなくRouteオブジェクトを受け入れるようにアダプタを変更する必要があります。これが正しい方向にあなたを指してくれることを願っています。

0

カスタムアダプターをお勧めします。 EXM ..

public class myBaseAdapter extends BaseAdapter { 
private LayoutInflater mInflater; 
private List<Route> mRouteList; 

public BilgiAdapter(Activity activity,List<Route> routeList){ 
    mInflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    mRouteList = routeList; 
} 

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

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

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

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View myView; 
    myView = mInflater.inflate(R.layout.line_layout,null); 
    Route r = mRouteList.get(position); 

    TextView txtRouteNumber = (TextView)myView.findViewById(R.id.textRouteNumber); 
    TextView txtRouteText = (TextView)myView.findViewById(R.id.textRouteText); 

    txtRouteNumber.setText(String.ValueOf(r.number)); 
    txtRouteText.setText(String.ValueOf(r.text)); 
    return myView; 
} 

}

MainActivity

ListView lstRoute; 
myBaseAdapter adapter; 
List<Route> list; 
... 
.. 
.. 
.. 
.. 
OnCreate(..) 
.. 
list = new ArrayList<Route>(); 
//add routes in list 
myBaseAdapter = new myBaseAdapter(MainActivity.this,list); 
lstRoute = (ListView)findViewById(R.id.listViewRoute); 
lstRoute.setAdapter(myBaseAdapter); 
... 
.. 
.. 

...対line_layout.xml(レイアウトファイル)...ベースアダプタルートクラス

class Route{ 
    public int number; 
    public String text; 
} 

を作成します。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textRouteNumber"/> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/textRouteText"/> 

</LinearLayout> 
関連する問題