-2

Hey Guys 私はこの問題のために過去 4 日間苦労していましたが、完全な解決策が提供された場所ではありませんでした。最終的にこの問題を解決し、コードを共有したいと思います。

4

2 に答える 2

1

このようなものをお探しですか?

LinearLayout newRow = new LinearLayout(getBaseContext());
newRow.setOrientation(LinearLayout.HORIZONTAL);
if(i % 2 != 0) {
    newRow.setBackgroundColor(res.getColor(/* your color here: e.g., R.color.rowcols*/));
}  

インクリメンタであるループでこれを使用するiと、追加するすべての行を別の色に変更できます。私は LinearLayouts を使用し、それらに何かを追加しました (その後、LinearLayouts をスクロール可能な親 LinearLayout に追加しました) が、同様のアプローチが ListViews に対しても達成できるはずです。

于 2012-06-04T13:37:03.157 に答える
1

これが私がこの問題を解決した方法です。この問題の完全なコードを提供している人を参照してください.

*これは私のアクティビティがどのように見えるかを参照してください--> * ****

public class MessageActivity extends Activity implements Observer,
        OnClickListener, OnItemClickListener,
        {

   //My adapter where my selected position will be hold


    private MySimpleAdapter adapter;
ListView listViewMsgs = null;

protected Context activity;

protected int position = 0;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.message);


}

//サーバーからデータを取得した後、カーソル アダプタを初期化します。

public void update(Observable arg0, Object arg1) {

        String[] from = new String[] { "sender_number", "display_name",
                "access_number", "timestamp", "message_type" };
        int[] to = new int[] { R.id.photomsg, R.id.display_name,
                R.id.access_number, R.id.timestamp1, R.id.message_type };
        adapter = new MySimpleAdapter(this, this.model,
                R.layout.messagelist, mymsglist, from, to);
        listViewMsgs = (ListView) findViewById(R.id.listViewMsgs);
        listViewMsgs.setAdapter(adapter);
        listViewMsgs.setOnItemClickListener((OnItemClickListener) this);
        listViewMsgs.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);

}

//選択した位置とすべてを設定する独自のアダプター。

public class MySimpleAdapter extends SimpleAdapter {


    public MySimpleAdapter(Context context, MessageModel model, int layout,
            ArrayList<HashMap<String, String>> mymsglist, String[] from,
            int[] to) {
        super(context, mymsglist, layout, from, to);
        this.context = context;
        this.mymsglist = mymsglist;
        this.model = model;
    }
        **//Add this code inside your own CursorAdapter.....
         //set the selected position of the row over here.

    private int selectedPos = 0;//-1    // init value for not-selected
    public void setSelectedPosition(int pos){
        selectedPos = pos;
        // inform the view of this change
        notifyDataSetChanged();
    }
    public int getSelectedPosition(){
        return selectedPos;
    }
    public void setSelected(int position) {
        selectedPosition = position;
    }**

        //One thing which most of the android developer i think dont know is when getView is called 
        //when you are making a ListView.....the answer is it will get called to draw each row of the ListView.

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

          //The get view is called everytime a row is drawn and that is how the color of each row is drawn.


        if(selectedPos == position){
            row.setBackgroundColor(Color.LTGRAY);
        }else{
            row.setBackgroundColor(Color.WHITE);
        }

    }
        return row;
    }

}


public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    //on selection of a row basically we are setting the position now when getView will draw this this
        //this row it will change the selected row color.
    adapter.setSelectedPosition(position);

    MessageActivity.this.position = position;

}
于 2012-06-07T05:54:22.107 に答える