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)
..?
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