0

アイテム クリック イベントは、リスト アクティビティが最初に作成されたときにのみ機能します。アクティビティを終了するか、アプリケーションを閉じると、イベントが機能しなくなります。アプリケーションを再インストールした場合のみ。何か助けはありますか?

MY ACTIVITY

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
        String[] fields = new String[] {
                "Nome da disciplina",
                "Número de faltas permitidas",
                "Número de faltas cometidas",
                "Hora do término",
                "Dias da semana"
        };

       setListAdapter(new DisciplineFormAdapter(this,fields));

 }




protected void onListItemClick(ListView l, View v, int position, long lo){
     super.onListItemClick(l, v, position, lo);
     Toast.makeText(this, "toast", Toast.LENGTH_SHORT).show();


}

マイアダプター

public DisciplineFormAdapter(Context c, String[] l){
    this.context = c;
    this.fields = l;
}

@Override
public int getCount() {

return fields.length;
}

@Override
public Object getItem(int position) {

return fields[position];
}

@Override
public long getItemId(int position) {

return position;
}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

    String field = fields[position];
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.activity_discipline, null);


    TextView fieldView = (TextView) v.findViewById(R.id.field);
    fieldView.setText(field);

    TextView name = (TextView) v.findViewById(R.id.value);
    name.setText("value");

    return v;
}

私のXML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".DisciplineActivity" >


<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/field"
    android:textSize="17sp"
    android:textStyle="bold" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/value" />

</LinearLayout>
4

1 に答える 1

0

listItemAdapter (カスタム) を使用しています。イベント リスナーをアダプタの getView に配置します。

public View getView(int position, View convertView, ViewGroup parent) {

    String field = fields[position];
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.activity_discipline, null);


    TextView fieldView = (TextView) v.findViewById(R.id.field);
    fieldView.setText(field);

    TextView name = (TextView) v.findViewById(R.id.value);
    name.setText("value");

     v.setOnClickListener(new View.OnClickListener() {          
            @Override
            public void onClick(View v) {       
            ... do something...
        }
    });



return v;

}

ここで、v はあなたの見解です。

トーストを表示する場合:

Toast.makeText(this, "toast", Toast.LENGTH_SHORT).show();

メインの UI スレッドにコールバックする必要があります。このバックグラウンド スレッドから UI を更新しようとしないでください。アプリがクラッシュします。

于 2013-05-16T18:42:06.030 に答える