我需要知道如何将第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)
......的东西?
答案 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");
希望这可以帮助你..