Android-Listview ClickListener

时间:2011-11-10 12:23:18

标签: android listview

我有一个列表,其中每个对象都是Task类型。我创建了一个列表,用于播放列表行中的所有任务详细信息。 我的代码如下:

lv=this.getListView();
    if(createtaskSubList().size() != 0)
    {
                //createTaskSubList gives me the List of taskObjects
        MyCustomAdapter adapter = new MyCustomAdapter(this,createtaskSubList());
        lv.setAdapter(adapter);
        lv.setDividerHeight(2);
        lv.invalidateViews();
    }
}
private ArrayList<Task> createtaskSubList() {
    // TODO Auto-generated method stub
    ArrayList<Task> taskSubList= new ArrayList<Task>();
    String[] values={ Integer.toString(userId),Integer.toString(number),Integer.toString(page)};
    String taskList = Helper.getfromUrl(taskDataFetch,values);
    if(taskList.length()!=0)
    {   
        String delims = ("[|]");
        String[] tasks = taskList.split(delims);
        int i=0;
        //Splitting Task series into individual items
        for (i = 0; i < tasks.length; i++) {
            String limit = ("','");
            String[] taskItem = tasks[i].split(limit);
            taskSubList.add(new Task(taskItem[1],Integer.parseInt(taskItem[2]),Integer.parseInt(removeCharAt(taskItem[0],0)),Integer.parseInt(taskItem[4]),Integer.parseInt(taskItem[5]),taskItem[6],Integer.parseInt(taskItem[3])));
        }
    }
    return taskSubList;
}

现在我的arrayadpter类是:

import java.util.ArrayList;

 import android.app.Activity;
 import android.graphics.Color;
 import android.view.LayoutInflater;
  import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
  import android.widget.TextView;

public class MyCustomAdapter extends ArrayAdapter<Task> {
 private final Activity context;
ArrayList<Task> taskSubList =new ArrayList<Task>();
public MyCustomAdapter(Activity context,ArrayList<Task> taskSubList) {

    super(context, R.layout.teammember, taskSubList);
    this.context = context;
    this.taskSubList=taskSubList;
}



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

    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.teammember, null, true);
    final TextView text = (TextView) rowView.findViewById(R.id.label);
    final TextView status = (TextView) rowView.findViewById(R.id.status);
    final TextView time = (TextView) rowView.findViewById(R.id.time);
    //time.setText(formatTime(taskSubList.get(position).getTimeSpent()));

    text.setText(taskSubList.get(position).getName());
    if(taskSubList.get(position).isCompleted()==0)
    {
        status.setText("Not Completed");
        status.setTextColor(Color.RED);
    }
    else
    {
        status.setText("Completed");
        status.setTextColor(Color.parseColor("#468765"));
    }
    return rowView;
}

我需要改变它,列表应该只包含名称,当我点击这些名称时,必须调用一个intent,它给出了一个布局,显示了特定TaskObject的详细信息。这里的详细信息表示该任务的属性应该以新布局中的文本视图的形式显示的对象。没有对话框或Toast ..

1 个答案:

答案 0 :(得分:0)

在你的getView()

status.setOnClickListener(new MyClickListener(position));




public class MyClickListener implements OnClickListener {
    private int posi;
        public MyClickListener(int position) {
                this.posi = position;
            }
            public void onClick(View v) {
                CustomDialog customDialog = new CustomDialog(ViewDetials.this);
        customDialog.show();
                //              Toast.makeText(getBaseContext(), "text view clicked",Toast.LENGTH_SHORT).show();

            }
        }
    }