2016-11-29 73 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>