Java 在由片段中的游标适配器填充的ListView中的按钮上设置侦听器
虽然我是一名多年的开发人员,但我对Java/Android和整个OOP都是新手。。。是的,我们仍然存在。。。步履蹒跚的遗物,一个更连续的时代。。。!! 无论如何,我有一个片段,它调用游标适配器来填充ListView ListView有几个文本视图,每行有两个按钮 到目前为止,我一直在尝试在每个按钮上设置侦听器,但没有成功。。。 我搜索了这个论坛(和其他论坛),并使用了一些由贡献者推荐的代码 从我的研究来看,我最大的问题似乎是我所做的一切都是从一个片段开始的 我的问题是如何将基本ListView id从片段传递到适配器 我的ListView子XMLJava 在由片段中的游标适配器填充的ListView中的按钮上设置侦听器,java,android,listview,android-fragments,Java,Android,Listview,Android Fragments,虽然我是一名多年的开发人员,但我对Java/Android和整个OOP都是新手。。。是的,我们仍然存在。。。步履蹒跚的遗物,一个更连续的时代。。。!! 无论如何,我有一个片段,它调用游标适配器来填充ListView ListView有几个文本视图,每行有两个按钮 到目前为止,我一直在尝试在每个按钮上设置侦听器,但没有成功。。。 我搜索了这个论坛(和其他论坛),并使用了一些由贡献者推荐的代码 从我的研究来看,我最大的问题似乎是我所做的一切都是从一个片段开始的 我的问题是如何将基本ListView
我的适配器代码
好了,伙计们……就这样。。。。希望您能提供帮助您需要将问题浓缩下来,因为目前还不清楚您在问什么,而只是抛出了一堆代码。请尝试创建一个可复制的最小测试用例,并清楚地陈述您的问题。@AlBlue我知道这个论坛是为所有经验层次的开发人员而设的。我没有足够的参考框架来确保我问的是正确的问题,这导致我“只是转储一堆代码”,以便为“可复制的最小测试用例”提供上下文。“如何将基本ListView id从片段传递到适配器”是否没有明确说明问题?我发现这个论坛的贡献者把他们的时间花在那些人身上,比如我自己,而不会贬低提问者。也许,作为一个在这方面有丰富经验的人,你可以给我一些指导?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="60dp">
<TextView
android:layout_marginTop="@dimen/textViewMarginTop"
android:layout_marginRight="@dimen/textViewMarginRight"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="12345678"
android:id="@+id/job_id"
/>
<TextView
android:layout_marginTop="@dimen/textViewMarginTop"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="abcdef"
android:id="@+id/from_location"
android:layout_toRightOf="@+id/job_id"
/>
<TextView
android:layout_marginTop="@dimen/textViewMarginTop"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="Blanchardstown"
android:id="@+id/to_location"
android:layout_toRightOf="@+id/from_location"
/>
<Button
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/job_bid"
android:text="@string/joblist_bid"
android:layout_below="@+id/job_id"
android:layout_toLeftOf="@+id/job_details"
/>
<Button
android:layout_width="80dp"
android:layout_height="wrap_content"
android:id="@+id/job_details"
android:text="@string/joblist_details"
android:layout_below="@+id/to_location"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="60dp">
<TextView
android:layout_marginTop="@dimen/textViewMarginTop"
android:layout_marginRight="@dimen/textViewMarginRight"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:text="12345678"
android:id="@+id/job_id"
/>
<TextView
android:layout_marginTop="@dimen/textViewMarginTop"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="abcdef"
android:id="@+id/from_location"
android:layout_toRightOf="@+id/job_id"
/>
<TextView
android:layout_marginTop="@dimen/textViewMarginTop"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:text="Blanchardstown"
android:id="@+id/to_location"
android:layout_toRightOf="@+id/from_location"
/>
<Button
android:layout_width="50dp"
android:layout_height="wrap_content"
android:id="@+id/job_bid"
android:text="@string/joblist_bid"
android:layout_below="@+id/job_id"
android:layout_toLeftOf="@+id/job_details"
/>
<Button
android:layout_width="80dp"
android:layout_height="wrap_content"
android:id="@+id/job_details"
android:text="@string/joblist_details"
android:layout_below="@+id/to_location"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
/>
</RelativeLayout>
public class jobListFragment extends ListFragment
{
private final String m_LogcatTag = "assignment5";
public ListView m_jobListView;
public JobDataAdpter m_jobDataAdapter;
JobsDataSource m_datasource;
private SQLiteDatabase m_database;
CursorAdapter m_cursoradaptor;
public View m_jobListFragmentBaseView;
Cursor m_cursor;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
super.onCreateView(inflater, container, savedInstanceState);
m_jobListFragmentBaseView = inflater.inflate(layout.joblistfragment, container, false);
ListView m_jobListView = (ListView)m_jobListFragmentBaseView.findViewById(android.R.id.list);
//Declare an object to handle database I-O and open a channel to the database
m_datasource = new JobsDataSource (getActivity().getApplicationContext());
m_datasource.open();
m_cursor = m_datasource.getAllJobs();
m_jobDataAdapter = new JobDataAdpter(getActivity().getApplicationContext(), m_cursor, 0);
m_jobListView.setAdapter(m_jobDataAdapter);
return m_jobListFragmentBaseView;
}
public class JobDataAdpter extends CursorAdapter
{
private final String mLogcatTag = "assignment5";
protected ListView mListView; THIS IS THE VARIABLE IN QUESTION
public JobDataAdpter(Context context, Cursor cursor, int flags )
{
super(context, cursor, 0);
}
protected static class RowViewHolder
{
public TextView m_job_bid;
public TextView m_job_details;
}
//End New Code\
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent)
{
View view = View.inflate(context, R.layout.jobslistlayout, null);
RowViewHolder holder = new RowViewHolder();
holder.m_job_bid = (TextView) view.findViewById(R.id.job_bid);
holder.m_job_details = (TextView) view.findViewById(R.id.job_details);
holder.m_job_bid.setOnClickListener(m_OnBidClickListener);
holder.m_job_details.setOnClickListener(m_OnDetailsClickListener);
view.setTag(holder);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor)
{
TextView m_job_IdView = (TextView) view.findViewById(R.id.job_id);
TextView m_from_LocationView = (TextView) view.findViewById(R.id.from_location);
TextView m_to_LocationView = (TextView) view.findViewById(R.id.to_location);
// Extract properties from cursor
long row_id = cursor.getLong((cursor.getColumnIndexOrThrow(MySQLiteOpenHelper.m_COLUMN_ID)));
String m_job_id = cursor.getString(cursor.getColumnIndexOrThrow(MySQLiteOpenHelper.m_COLUMN_JOB_ID));
String m_From_Location = cursor.getString(cursor.getColumnIndexOrThrow(MySQLiteOpenHelper.m_COLUMN_JOB_FROM_LOCATION));
String m_To_Location = cursor.getString(cursor.getColumnIndexOrThrow(MySQLiteOpenHelper.m_COLUMN_JOB_TO_LOCATION));
// Populate fields with extracted properties
m_job_IdView.setText(m_job_id);
m_from_LocationView.setText(String.valueOf(m_From_Location));
m_to_LocationView.setText(String.valueOf(m_To_Location));
}
private View.OnClickListener m_OnBidClickListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{ HERE IS WHERE THE VARIABLE IS USED
final int position = mListView.getPositionForView((View) v.getParent());
Log.v(mLogcatTag, "Title clicked, row %d" + position);
}
};
private View.OnClickListener m_OnDetailsClickListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
final int position = mListView.getPositionForView((View) v.getParent());
Log.v(mLogcatTag, "Text clicked, row %d" + position);
}
};
}