Android-Listview ClickListener

#android #listview

#Android #просмотр списка

Вопрос:

У меня есть список, в котором каждый объект относится к типу 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.Подробности здесь означают свойства этого объекта task, который должен быть показан в виде текстовых представлений в новом макете.Не является диалогом или тостом..

Ответ №1:

В вашем 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();

            }
        }
    }