2012-08-17 69 views
0

我在列表活動中遇到佈局問題。 我的目錄包含分離器和文本行沒有動畫的ListActivity

SetupActivity擴展ListActivity

private MyCustomAdapter mAdapter; 
TextView selection; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

    mAdapter = new MyCustomAdapter(); 

    mAdapter.addItem("Help/FAQ"); 
    mAdapter.addSeparatorItem("Connection to Server"); 
    // mAdapter.addItem("Connection"); 
    // mAdapter.addItem("Network"); 
    // mAdapter.addItem("config"); 
    // mAdapter.addItem("User"); 
    // mAdapter.addItem("pass"); 
    // mAdapter.addItem("Email"); 
    // mAdapter.addItem("PlatForm"); 
    mAdapter.addSeparatorItem("Consumption"); 
    // mAdapter.addItem("100%"); 
    mAdapter.addSeparatorItem("Map"); 
    // mAdapter.addItem("Map rotation"); 
    // mAdapter.addItem("auto Zoom"); 
    // mAdapter.addItem("Measure Units"); 
    // mAdapter.addItem("Show Heading"); 
    // mAdapter.addItem("Compass North");*/ 
    mAdapter.addFooterItem(getString(R.string.setup_note_map)); 
    mAdapter.addSeparatorItem("Support"); 
    mAdapter.addItem("About"); 
    /* 
    * mAdapter.addItem("Contact Us"); mAdapter.addItem("Tutorial"); 
    * mAdapter.addItem("Setup Wizard"); 
    */ 
    mAdapter.addSeparatorItem("Blogs"); 
    mAdapter.addFooterItem(getString(R.string.setup_note_blogs)); 

    setListAdapter(mAdapter); 

    // selection = (TextView) findViewById(R.id.text); 
} 

public void onListItemClick(ListView parent, View view, int position, 
     long id) { 
    parent.getChildAt(position).setBackgroundColor(position); 
    if (position == 0) { 
     Intent myIntent = new Intent(SetupActivity.this, 
       WebviewHandlerActivity.class); 
     myIntent.putExtra("ressource", "help"); 
     SetupActivity.this.startActivity(myIntent); 
    } else if (position == 6) { 
     Intent myIntent = new Intent(SetupActivity.this, 
       AboutActivity.class); 
     SetupActivity.this.startActivity(myIntent); 
    } 

} 

// Adapter Class 
private class MyCustomAdapter extends BaseAdapter { 

    private static final int TYPE_ITEM = 2; 
    private static final int TYPE_SEPARATOR = 0; 
    private static final int TYPE_FOOTER = 1; 
    private static final int TYPE_MAX_COUNT = TYPE_ITEM + 1; 

    private ArrayList<String> mData = new ArrayList<String>(); 
    private LayoutInflater mInflater; 

    private TreeSet<Integer> mSeparatorsSet = new TreeSet<Integer>(); 

    private TreeSet<Integer> mFooterSet = new TreeSet<Integer>(); 

    public MyCustomAdapter() { 
     getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
     mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public void addItem(final String item) { 
     mData.add(item); 
     notifyDataSetChanged(); 
    } 

    public void addSeparatorItem(final String item) { 
     mData.add(item); 
     // save separator position 
     mSeparatorsSet.add(mData.size() - 1); 
     notifyDataSetChanged(); 
    } 

    public void addFooterItem(final String item) { 
     mData.add(item); 
     // save separator position 
     mFooterSet.add(mData.size() - 1); 
     notifyDataSetChanged(); 
    } 

    @Override 
    public int getItemViewType(int position) { 
     if (mSeparatorsSet.contains(position)) 
      return TYPE_SEPARATOR; 
     else if (mFooterSet.contains(position)) 
      return TYPE_FOOTER; 
     return TYPE_ITEM; 
    } 

    @Override 
    public int getViewTypeCount() { 
     return TYPE_MAX_COUNT; 
    } 

    public int getCount() { 
     return mData.size(); 
    } 

    public String getItem(int position) { 
     return mData.get(position); 
    } 

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

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

     ViewHolder holder = null; 
     int type = getItemViewType(position); 
     if (convertView == null) { 
      holder = new ViewHolder(); 
      switch (type) { 
      case TYPE_ITEM: 
       convertView = mInflater.inflate(R.layout.item1, null); 
       holder.textView = (TextView) convertView 
         .findViewById(R.id.text); 
       break; 
      case TYPE_SEPARATOR: 
       convertView = mInflater.inflate(R.layout.item2, null); 
       holder.textView = (TextView) convertView 
         .findViewById(R.id.textSeparator); 
       break; 
      case TYPE_FOOTER: 
       convertView = mInflater.inflate(R.layout.footer, null); 
       holder.textView = (TextView) convertView 
         .findViewById(R.id.note); 
       break; 
      } 
      convertView.setTag(holder); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.textView.setText(mData.get(position)); 
     return convertView; 
    } 

} 

public static class ViewHolder { 
    public TextView textView; 
} 

我的XML item1 & item2包含LinearLayoutTextView內 和我footer.xml只有textView

我的問題是,當我點擊一排它沒有得到橙色,說我點擊它,除了我的腳註...(我不想要的那個)

所以我找出它是因爲它不是在LinearLayout所以我試圖推遲LinearLayoutitem1.xml但我不能編譯了。

有人可以向我解釋如何讓我的行與點擊動畫,而不是我的腳?

乾杯

回答

0

你沒有獲得點擊的顏色,因爲你已經設置背景顏色`

setBackgroundColor

您需要設置一個statelistDrawable爲背景

編輯:你需要設置一個像這樣的drwable

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/pressed_img" android:state_pressed="true"/> 
    <item android:drawable="@drawable/default_img"/> 
</selector> 
+0

我感覺很蠢,現在一直呆在這個幾個小時。但是,問題是我的xml文件中有一個setBackgroudColor。 – Kalimero95 2012-08-17 14:59:37

+0

非常感謝。 – Kalimero95 2012-08-17 14:59:56