Ich habe einen Spinner, den ich mit Kindernamen aus einer SQLite-Datenbank füllen muss. Ich habe eine Methode, um eine Liste von Kindern zurückzugeben.So listen Sie die Texteigenschaft eines Listenelements in einem Spinner auf
public List<ChildUser> getChildren() {
List<ChildUser> childList = new ArrayList<ChildUser>();
//select columns
String[] tableColumns = new String[]{"id", "childname", "nickname"};
Cursor cursor = db.query("child", tableColumns, "parent =? ", new String[]{_parentName}, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
ChildUser child = new ChildUser();
//take values from database
child.setId(cursor.getInt(0));
child.setChildName(cursor.getString(1));
child.setNickName(cursor.getString(2));
//add to db
childList.add(child);
cursor.moveToNext();
}
return childList;
}
ich dann rufen Sie diese Methode von einem Fragment einer Schleuder zu füllen, aber ich bin eine andere Eigenschaft des childlist bekommen dispayed, wie kann ich in der Schleuder die Eigenschaft text meines ausgewählten Elements angezeigt werden? (Bitte klicken Sie auf den Link, um zu sehen genau das, was meine Spinner Displays)
final ChildDataBase cdb = new ChildDataBase(getActivity());
final List<ChildUser> childList = cdb.getChildren();
Spinner spinner = (Spinner) v.findViewById(R.id.del_child_spinner);
ArrayAdapter<ChildUser> spinnerAdapter = new ArrayAdapter<ChildUser>(getActivity(), android.R.layout.simple_spinner_item, childList);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
childId = childList.get(position).getId();
Toast succ = Toast.makeText(Home.super.getContext(), childList.get(position).getChildName() + " Selected.", Toast.LENGTH_SHORT);
succ.show();
return;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast succ = Toast.makeText(Home.super.getContext(), "No child selected.", Toast.LENGTH_SHORT);
succ.show();
}
});
Spinner < --- hier klicken Spinner
Ich habe auch eine benutzerdefinierte Liste-Adapter, im nicht sicher, ob ich es anwenden können irgendwie, um diese Aufgabe zu erledigen.
/**
* Created by Victor on 4/3/2016.
*/
public class ChildListAdapter extends ArrayAdapter<ChildUser> {
private FragmentTransaction fragmentTransaction;
private android.support.v4.app.FragmentManager fragmentManager;
private final Context context;
private final List<ChildUser> childList;
public ChildListAdapter(Context context, List<ChildUser> childList){
super(context, R.layout.fragment_child_list_layout, childList);//fragment_child_list
this.context = context;
this.childList= childList;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.fragment_child_list_layout,parent,false);
Button childName = (Button)rowView.findViewById(R.id.childButton);
childName.setText(childList.get(position).getNickName());
childName.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String selectedChild = childList.get(position).getChildName();
// do something with selected item
Toast fail = Toast.makeText(ChildListAdapter.super.getContext(), selectedChild + " selected", Toast.LENGTH_SHORT);
fail.show();
Globals._selectChild = selectedChild;
TaskList taskList = new TaskList();
fragmentTransaction = ((FragmentActivity)context).getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragholder, taskList);
fragmentTransaction.commit();
}
});
return rowView;
}
}
Das ist mein ChildUser Objekt
public class ChildUser {
String childName;
String nickName, gender, parent;
int id, age;
public void setChildName(String childName)
{
this.childName = childName;
}
public String getChildName()
{
return this.childName;
}
public void setNickName(String nickName)
{
this.nickName = nickName;
}
public String getNickName()
{
return this.nickName;
}
public void setGender(String gender)
{
this.gender = gender;
}
public String getGender()
{
return this.gender;
}
public void setParent(String parent)
{
this.parent = parent;
}
public String getParent()
{
return this.parent;
}
public void setId(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return this.age;
}
}
Ich denke, das passiert, weil Sie 'Super' in Ihrem Konstruktor aufrufen, kommentieren und sehen, ob es – yennsarah
in meinem childlistadapter hilft? Wenn ich es auskommen bekomme ich viele Fehler – vhdz04
möchten Sie die Daten, die in sqlite gespeichert ist in Spinner –