我的应用中有一个标签式活动,有3个标签。在每个标签中,我都有一个用emcursoradapter填充的 listView 。我现在为所有 listView 的每一行添加了一个按钮。 如果没有按钮,我可以单击 listView 转到我的应用程序的另一个页面。但是现在我添加了Button,它已经不可能了。另外,对于我的按钮OnClick方法,我刚刚在mainActivity中添加了方法,它是否正常,是正确的还是应该以不同的方式进行?
所以:我希望能够点击我的listView转到某个页面并点击我的按钮转到另一个页面,我该怎么做?
这是我的list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/text_branche_cours"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="English"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" - " />
<TextView
android:id="@+id/text_designation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reading"
/>
<Button
android:id="@+id/bAjouterJalon"
android:layout_width="49dp"
android:layout_height="29dp"
android:layout_gravity="right"
android:background="@drawable/ic_action_add_jalon"
android:onClick="Add" />
我的一个标签的代码:
public class CoursActuel extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.activity_cours_actuel, container, false);
//récupération de la base de donnees
final DatabaseHelper dbhelper = new DatabaseHelper(getActivity());
//creation d'un adapter et d'un listview
final CustomAdapter adapter;
final ListView lvCours;
//récuperation de la listview à l'aide de son id
lvCours =(ListView)rootView.findViewById(R.id.ListCours);
//création d'un Cursor qui récupère ce que la requête créée dans le helper aura retournée
Cursor cursor = dbhelper.getAllCoursActuel();
//insertion des champs dans la colonne 'nom' dans une tableau
String[] from = { "b.nom", "c.designation" };
int[] to = { R.id.text_branche_cours, R.id.text_designation };
//on crée un adapter qui contiendra le contenu de ce tableau
adapter = new CustomAdapter(getContext(),R.layout.list_row,cursor,from,to);
lvCours.setAdapter(adapter);
//on implémente l'adapter à ma listview
lvCours.setAdapter(adapter);
//j'avertis que le contenu a été modifié
adapter.notifyDataSetChanged();
//ce listener permet de naviguer vers la page de modification de cours
//en transferant toutes les données en lien avec le cours selectionné
lvCours.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//je créé un cursor par rapport au cours
// et j'insère toutes les valeurs en lien avec ce cours
Cursor cursor_modifier = (Cursor)adapter.getItem(position);
Intent modifier = new Intent(getActivity(), ModifierCours.class);
String date_debut= cursor_modifier.getString(1);
String date_fin = cursor_modifier.getString(2);
int diziemepoint = cursor_modifier.getInt(3);
int demipoint =cursor_modifier.getInt(4);
String description = cursor_modifier.getString(5);
String designation = cursor_modifier.getString(6);
int lundi = cursor_modifier.getInt(7);
int mardi = cursor_modifier.getInt(8);
int mercredi = cursor_modifier.getInt(9);
int jeudi = cursor_modifier.getInt(10);
int vendredi = cursor_modifier.getInt(11);
int samedi = cursor_modifier.getInt(12);
String selected_branche = cursor_modifier.getString(13);
int id_branche = dbhelper.getBrancheID(selected_branche);
//j'insère toutes les valeurs dans mon Intent, pour les récupérer après
//a l'aide de la clé
modifier.putExtra("idold",id_branche);
modifier.putExtra("branche",selected_branche);
modifier.putExtra("date_debut",date_debut);
modifier.putExtra("date_derniercours",date_fin);
modifier.putExtra("demipoint",demipoint);
modifier.putExtra("dixiemepoint",diziemepoint);
modifier.putExtra("description",description);
modifier.putExtra("designation",designation);
modifier.putExtra("lundi",lundi);
modifier.putExtra("mardi",mardi);
modifier.putExtra("mercredi",mercredi);
modifier.putExtra("jeudi",jeudi);
modifier.putExtra("vendredi",vendredi);
modifier.putExtra("samedi",samedi);
modifier.putExtra("ajout","listView");
//je démarre l'activité
startActivity(modifier);
}
});
return rootView;
}
}
我的customAdapterClass
public class CustomAdapter extends SimpleCursorAdapter {
private Context mContext;
private Context appContext;
private int layout;
private Cursor cr;
private final LayoutInflater inflater;
public CustomAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
this.layout = layout;
this.mContext = context;
this.inflater = LayoutInflater.from(context);
this.cr = c;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return inflater.inflate(layout, null);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
Button btn = (Button) view.findViewById(R.id.bAjouterJalon);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(mContext, OngletJalonsNotes.class);
mContext.startActivity(intent);
}
});
}
答案 0 :(得分:1)
您应该{strong>移除 OnClick
中的按钮Fragment
,而不是将其添加到CustomAdapter
。
创建扩展CustomAdapter
SimpleCursorAdapter
public class CustomAdapter extends SimpleCursorAdapter {
private Context mContext;
private Context appContext;
private int layout;
private Cursor cr;
private final LayoutInflater inflater;
public CustomAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
this.layout = layout;
this.mContext = context;
this.inflater = LayoutInflater.from(context);
this.cr = c;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return inflater.inflate(layout, null);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
final int row_id = cursor.getInt(cursor.getColumnIndex("_id"));
...
TextView tv_Name = (TextView) view.findViewById(R.id.text_branche_cours);
...
Button btn = (Button) view.findViewById(R.id.bAjouterJalon);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(context, ActivityB.class);
startActivity(intent);
}
});
}
}
在 CoursActuel 片段中,更改此行
adapter = new SimpleCursorAdapter(getContext(), R.layout.list_row, cursor, from, to, 0);
到
CustomAdapter adapter = new CustomAdapter(getContext(),R.layout.list_row, cursor, from, to, 0);
lvCours.setAdapter(adapter);
请参阅How can I set up button onclicklistner when using simple cursor adapter