将用户点击/刷过的项目从第一个片段中的一个列表视图转移到第二个片段

时间:2016-12-22 10:06:16

标签: android listview android-fragments android-intent listadapter

我需要知道如何将第1个片段的listview中的项目移动到第2个片段上的另一个listview.Below是2个片段的代码和包含列表项视图的xml文件。 的 AbsentStudentFragment.java

修改 我已经用数组列表替换了所有数组,并且我使用带有简单POJO类的Arraylist为列表适配器生成数据。 请检查下面。我的问题是如何使用我从列表项中获取的值,如名称,置信度等,或者我得到的类型为StudentDetails的POJO,并将这些值添加到PresentStudent片段中的PresentStudent arraylist。?

public class AbsentStudentFragment extends Fragment
{
ListView listForAbsentStudents;
Context context;


    public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState)
    {
       final ArrayList<StudentDetails> stuAbsent= new ArrayList<>();

    stuAbsent.add(new StudentDetails("name","nameNot",R.mipmap.user));
    stuAbsent.add(new StudentDetails("81","checkName",R.mipmap.user));
    stuAbsent.add(new StudentDetails("60","3rd",R.mipmap.user));

    View view = inflater.inflate(R.layout.fragment_absent_students, container,false);
    context=getActivity();
    listForAbsentStudents=(ListView)view.findViewById(R.id.listview_for_absent_students);
  final AdapterForAbsentList adapterForAbsentList=new    AdapterForAbsentList(context,stuAbsent);
       listForAbsentStudents.setAdapter(adapterForAbsentList);
        listForAbsentStudents.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 //what to do here.?
                //Added below code now
            StudentDetails studentDetails4;
            studentDetails4=stuAbsent.get(position);

            String temName=studentDetails4.getStudentName();
            String tempConfidence=studentDetails4.getStudentConfidence();
            int tempImage=studentDetails4.getStudentImage();
 //Now how can I add these values to presentstudent array list in PresentStudent.java fragment.?

                         //presentStudentFragment.addToPresentStudents(temName,tempConfidence,tempImage);
                   Toast.makeText(getContext(),"value"+temName,Toast.LENGTH_SHORT).show();
        }
    });
        return view;
    }
    public class AdapterForAbsentList extends BaseAdapter
    {

  public AdapterForAbsentList(Context   mContext,ArrayList<StudentDetails>absentStudents) 
{
        this.absentStudents2 = absentStudents;

this.mContext = mContext;
    }

    ArrayList<StudentDetails> absentStudents2;
    private Context mContext;



    @Override
    public int getCount() {
        return absentStudents2.size();;
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View convertView, ViewGroup viewGroup) {
        View viewForListView;
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (convertView == null)
        {
 viewForListView =inflater.inflate(R.layout.custom_row_for_absent_list,null);
            TextView txtConfidence=(TextView)viewForListView.findViewById(R.id.txtConfidence_Temp);
            TextView txtName=(TextView)viewForListView.findViewById(R.id.txtName_Temp);
            ImageView imgStudentThumbnail=(ImageView)viewForListView.findViewById(R.id.imgFile_Temp);
           txtConfidence.setText(absentStudents2.get(i).getStudentConfidence());
            txtName.setText(absentStudents2.get(i).getStudentName());
            imgStudentThumbnail.setImageResource(absentStudents2.get(i).getStudentImage());

        }
        else
        {
            viewForListView = convertView;
        }
        return viewForListView;
    }
    }
    }

PresentStudentFragment.java 已编辑添加了arraylist 我应该如何将我从AbsentStudentFragment.java上的数组列表中获取的值添加到ArrayList listPresentStudents ..?

public class PresentStudentFragment extends Fragment {
ListView listForPresentStudents;
 public ArrayList<StudentDetails>listPresentStudents=new ArrayList<>();
Context context;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    View view = inflater.inflate(R.layout.fragment_present_students, container, false);
    context=getActivity();
        listPresentStudents.add(new StudentDetails("80","saurabh",R.mipmap.user));
    listPresentStudents.add(new StudentDetails("60","pqr",R.mipmap.user));

    listForPresentStudents=(ListView)view.findViewById(R.id.listview_for_present_students);

 AdapterForPresentList adapterForPresentListNew=new AdapterForPresentList(context,listPresentStudents);

   listForPresentStudents.setAdapter(adapterForPresentList);
    return view;
    }
 public class AdapterForPresentList extends BaseAdapter 
 {

    private Context mContext;
    ArrayList<StudentDetails>abc;


    public AdapterForPresentList(Context context,    ArrayList<StudentDetails>pqr) 
 {
        this.mContext=context;
        this.abc = pqr;
 }
    @Override
    public int getCount() {
        return abc.size();;
    }
    @Override
    public Object getItem(int i) {
        return null;
    }
    @Override
    public long getItemId(int i) {
        return 0;
    }
    @Override
    public View getView(int i, View convertView, ViewGroup viewGroup)
    {
        View viewForListView;
        LayoutInflater inflater = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        if (convertView == null)
        {
            viewForListView = inflater.inflate(R.layout.custom_row_for_present_list, null);
            TextView txtConfidence=(TextView)viewForListView.findViewById(R.id.txtConfidence_Temp2);
            TextView txtName=(TextView)viewForListView.findViewById(R.id.txtName_Temp2);
            ImageView imgStudentThumbnail=(ImageView)viewForListView.findViewById(R.id.imgFile_Temp2);

       txtName.setText(abc.get(i).getStudentName());
            txtConfidence.setText(abc.get(i).getStudentConfidence());
              imgStudentThumbnail.setImageResource(abc.get(i).getStudentImage());


        } else
        {
            viewForListView = convertView;
        }
        return viewForListView;
    }


    }
    }

POJO班级 StudentDetails.java

 public class StudentDetails {
 String studentName,studentConfidence;
 int studentImage;

 public StudentDetails() {
 }

 public String getStudentName() {
    return studentName;
 }

 public void setStudentName(String studentName) {
    this.studentName = studentName;
 }

 public String getStudentConfidence() {
    return studentConfidence;
 }

 public void setStudentConfidence(String studentConfidence) {
    this.studentConfidence = studentConfidence;
 }

 public int getStudentImage() {
    return studentImage;
 }

 public void setStudentImage(int studentImage) {
    this.studentImage = studentImage;
 }

 public StudentDetails(String studentName, String studentConfidence, int studentImage) {
    this.studentName = studentName;
    this.studentConfidence = studentConfidence;
    this.studentImage = studentImage;
 }
 }

列表项的视图 custom_row_list

 <ImageView
    android:id="@+id/imgFile_Temp2"
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:src="@mipmap/user"
    android:padding="10dp"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/imgFile_Temp2"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txtConfidence_Temp2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textColor="@android:color/black"
        android:textSize="16sp" />


    <TextView
        android:id="@+id/txtName_Temp2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textColor="@android:color/black"
        android:textSize="16sp" />

我需要的是,如果我从listForAbsentStudents列表中轻扫/点击某个项目,那么它应该转移到listForPresentStudents列表,该项目应该从缺席的学生列表中删除。 我怎么能这样做...忘掉刷牙......对我来说似乎很遥远.. 请告诉我应该如何onItemclick() listview方法来实现这一目标。 我应该使用意图和/或捆绑来传递额外的东西..如此...? 有点像parent.getItemAt(position) ......的东西?

1 个答案:

答案 0 :(得分:1)

我没有得到你在问什么..我假设你的一个片段包含ListView..Right?如果用户单击ListView中的任何Item,那么该Item应该传递给另一个片段。对吗?

请在AbsentStudentFragment.java中使用此处onItemClick(..)方法

 PresentStudentFragment fragObj = new PresentStudentFragment();
 Bundle args = new Bundle();
 args.putString("YourKey", "YourValue");
 //as many as putString() you want  
 fragObj.setArguments(args);

在onCreateView(..)方法中的PresentStudentFragment.java中

String value = getArguments().getString("YourKey");

希望这可以帮助你..