2011-08-03 18 views
1

我想先說我對android開發很陌生。列表中每個項目的左右兩側都有文字? (Android)

我的問題是我如何改變我的下面的例子,以允許在每個列表項的左側和右側的文本。

我的目標是讓每個列表項目在左邊都有一個項目說明,右邊是該說明的一個數值。

所有我到現在是一個列表,顯示我想要在每個項目的左側顯示的值。

主要的Java活動(NewtestActivity.java):

public class NewtestActivity extends Activity { 
    String[] exampleList = { 
     "Item 1", 
     "Item 2", 
     "Item 3", 
     "Test 4", 
     "Item 5", 
     "Test 6", 
     "Item 7", 
     "Test 8" 
     //etc etc 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Get an instance of your listview in code 
     ListView listview = (ListView) findViewById(R.id.list); 

     // Set the listview's adapter  
     listview.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, exampleList)); 
    } 
} 

的main.xml:

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

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="280dp" 
     android:layout_height="fill_parent" 
    > 
     <ImageView 
      android:src="@drawable/icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="2dp" 
      android:layout_marginLeft="5dp" 
     /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="14dp" 
      android:layout_marginLeft="5dp" 
      android:text="@string/app_name" 
     /> 
    </LinearLayout> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="200dp" 
    /> 

</LinearLayout> 

感謝您的幫助(:

+0

您應該必須使用自定義ListView。以下是一些有用的鏈接: http://appfulcrum.com/?p=311 http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ –

回答

0
  1. 擴展ArrayAdapter
  2. 編輯的android .R.layout.simple_list_item_1以包含您的佈局 想

Check this example

+0

感謝您的答覆和示例..但我怎麼能改變這個例子,以便我能夠顯示R.layout.main中的元素以及列表,而不會崩潰? – 92Jacko

+0

查看我的答案:http://stackoverflow.com/questions/6928002/help-with-listview-and-r-layout-main-android/6928142#6928142 –

0

定義自定義適配器這樣並定義佈局俗xml文件中根據自己的需要。

import java.util.Vector; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class YourAdapter extends BaseAdapter{ 

    private Context mContext; 
    private Vector mValuestobeShown; 
    private Vector mValuetext; 
     private Vector mValueNumber; 

    public YourAdapter (Context context, Vector text,Vector item, Vector number){ 
     mContext = context; 
       mValuetext = text; 
       mValuestobeShown = item; 
     mValueNumber = number; 
    } 

    public int getCount() { 
     if(null != mValuestobeShown){ 
      return mValuestobeShown.size(); 
     } 
     return 0; 
    } 

    public Object getItem(int position) { 
     if(position < mValuestobeShown.size()) 
      return mValuestobeShown.get(position); 
     else 
      return null; 
    } 

    public long getItemId(int position) { 
     return 0; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder ; 
     if(convertView == null){ 
      LayoutInflater li =(LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = li.inflate(R.layout.your_custom_layout, null); 
      holder = new ViewHolder(); 
      holder.text = (TextView) convertView.findViewById(R.id.txt); 
         holder.item = (TextView) convertView.findViewById(R.id.item); 
      holder.num = (TextView) convertView.findViewById(R.id.num); 
      convertView.setTag(holder); 
     }else{ 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     try{ 
      holder.item.setText(mValueType.get(position).toString()); 
      //set other values..... 
     }catch(Exception e){ } 

     return convertView; 
    } 

    class ViewHolder { 
     TextView text; 
       TextView item; 
     TextView num; 

    } 

} 
2

由於沒有直接鏈接到你的問題,你可以提高你的XML代碼,並在首LinearLayout(頭),通過使用屬性android:drawableLeft和你TextViewandroid:drawablePadding

這使您可以將您的圖標放在appName TextView的左側。

+0

感謝您的提示:P – 92Jacko

相關問題