2016-11-29 61 views
0

所以我有一個文本視圖的列表視圖,我想添加第二個文本視圖到它。但是我不知道如何修改適配器,然後在我的主要活動中調用它,即使在查看了stackoverflow上的許多類似問題之後。添加第二個textview到customAdapter ListView

我的繼承人CustomAdapter.java現在怎麼

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; 

和我的繼承人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

我會建議創建一個自定義路由類,因爲這個適配器是爲了處理一個數組。使用getter和setter方法爲新類中的路由號和路由項創建一些成員變量。然後,您應該能夠在主活動中創建一個Route對象的新數組列表,並將它們(作爲新的Route對象)附加到現有的字符串數組中作爲新數組。

您必須將適配器更改爲接受Route對象而不是CharSequence。希望這可以指導你正確的方向。

0

我會爲你推薦一個自定義適配器。 EXM .. 創建路由類

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

底座適配器...

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 VS ..

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(佈局文件)

<?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>