2 Stimmen

Android: Kann ein EditText innerhalb einer ListView ebenso fokussiert werden wie das Listenelement?

Ich weiß, dass, wenn Sie den Fokus auf jede "fokussierbare" Objekt innerhalb einer ListView es deaktiviert die Fähigkeit, Fokus auf die ListView selbst. Ich habe ein EditText und ein paar Schaltflächen innerhalb meiner ListView-Element, aber ich möchte auch in der Lage sein, ein ContextMenu mit der ListView zu verwenden, so dass ich in der Lage sein muss, den Fokus zu halten. Gibt es eine Möglichkeit, zu überschreiben, so dass sowohl meine ListView und EditText-Feld den Fokus erhalten können? Ich nehme an, wenn es möglich ist, würde es innerhalb der benutzerdefinierten Adapter getan werden. Ich verwende einen SimpleCursorAdapter und verwalte meine Schaltflächenklicks innerhalb der NewView-Methode. Mein Code ist unten:

public class GrainListAdapter extends SimpleCursorAdapter {

private Button upButton;

public GrainListAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
    super(context, layout, c, from, to);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    int nameColumn = cursor.getColumnIndex("name");
    String getName = cursor.getString(nameColumn);
    TextView name = (TextView)view.findViewById(R.id.GrainName);
    name.setText(getName);

    int originColumn = cursor.getColumnIndex("origin");
    String getOrigin = cursor.getString(originColumn);
    TextView origin = (TextView)view.findViewById(R.id.GrainOrigin);
    origin.setText(getOrigin);

    int lbsColumn = cursor.getColumnIndex("lbs");
    String getLbs = cursor.getString(lbsColumn);
    EditText lbs = (EditText)view.findViewById(R.id.GrainLbs);
    lbs.setText(getLbs);
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    View view = View.inflate(context, R.layout.grain_list_item, null);
    upButton = (Button)view.findViewById(R.id.UpLbsButton);
    upButton.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            Log.i("Grain Adapter Action", "Button CLICKED!!!");
        }
    });
    return view;
}

0 Stimmen

Das Problem ist das Layout. Ich hoffe, Sie haben etwas Platz in der Zeile für die Fokussierung. Sie können onTouch oder on Click für die Ansicht versuchen, aber ich bezweifle, dass es kaum eine Hilfe sein wird.

0voto

maebe Punkte 553

Ich glaube nicht, dass Sie das tun können. http://www.youtube.com/watch?v=wDBM6wVEO70 Das Video ist lang, aber es enthält viele Informationen über Listview. An einer Stelle wird erklärt, dass es die Anwendung verwirren würde, wenn sie nicht wüsste, welches Element Sie auswählen. Ich würde in Betracht ziehen, eine weitere Schaltfläche hinzuzufügen oder einen Longclicklistener() einzurichten und ihn für alle Elemente in der Listenansicht freizugeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X