0

Ich muss wissen, wie wir ein Element aus einer Listview auf 1. Fragment in eine andere Listview auf 2. Fragment verschieben können. Unten ist der Code für 2 Fragmente und die XML-Datei, die Ansichten für Listenelemente enthält. AbsentStudentFragment.javaÜbertragen von Benutzer geklickt/swiped Element von einem Listview in 1. Fragment zu einem anderen Listview in 2. Fragment

Edit: ich ersetzen alle Arrays mit Array-Liste, und ich bin Daten für Listen Adapter Arraylist mit einer einfachen POJO Klasse zu erzeugen. Bitte überprüfen Sie unten.Meine Frage ist, wie kann ich die Werte, die ich von Listenelement wie Name, Vertrauen usw. oder die POJO bekomme ich vom Typ StudentDetails bekommen und diese Werte der PresentStudent-Arraylist in PresentStudent-Fragment hinzufügen.

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; 
    } 
    } 
    } 

Und PresentStudentFragment.java Edited Added der Arraylist.
Wie soll ich Werte hinzufügen, die ich von Array-Liste auf AbsentStudentFragment.java zu der 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 Klasse 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; 
} 
} 

und Ansichten für Listenelemente 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" /> 

Was ich brauche, wenn ich Swipe/ein Element geklickt von listForAbsentStudents Liste, dann sollte es anübertragen werdenListe und dieser Artikel sollte aus der Abwesenheitsliste gelöscht werden. Wie kann ich das tun .. Vergessen Sie zu swiping..es scheint mir entfernt. Bitte sagen Sie mir, was soll ich tun auf onItemclick() Methode von listview um dies zu erreichen. sollte ich Intents und/oder Bundle verwenden, um Extras zu übergeben..wenn so wie ..? Etwas in Richtung parent.getItemAt(position) ..?

Antwort

1

Ich bekomme nicht, was Sie fragen..ich nehme an, dass eines Ihrer Fragmente ListView..Right enthält? Wenn Benutzer auf ein Element aus der ListView klicken, sollte dieses Element an ein anderes Fragment übergeben werden.

bitte dies in AbsentStudentFragment.java verwenden, wo in onItemClick (..) Methode

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

wo in PresentStudentFragment.java in Ihrem onCreateView (..) Methode

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

Hope this Sie hilft ..

+0

Nein. Was ich wollte, war ein Element von einer Listview zur anderen übergeben .. ja, Sie haben Recht, dass beide Listenansichten in separaten Fragmenten sind ... Problem war in Farfment Kommunikation .. Ich habe versucht, 'Interface-und Aktivitäts-Methode' bt, die nicht funktioniert auch ... so schließlich durch die Verwendung von SQLite db im Backend habe ich es geschafft ... danke für Ihre Antwort sowieso .. – saurabh169

Verwandte Themen