Java 在由片段中的游标适配器填充的ListView中的按钮上设置侦听器

Java 在由片段中的游标适配器填充的ListView中的按钮上设置侦听器,java,android,listview,android-fragments,Java,Android,Listview,Android Fragments,虽然我是一名多年的开发人员,但我对Java/Android和整个OOP都是新手。。。是的,我们仍然存在。。。步履蹒跚的遗物,一个更连续的时代。。。!! 无论如何,我有一个片段,它调用游标适配器来填充ListView ListView有几个文本视图,每行有两个按钮 到目前为止,我一直在尝试在每个按钮上设置侦听器,但没有成功。。。 我搜索了这个论坛(和其他论坛),并使用了一些由贡献者推荐的代码 从我的研究来看,我最大的问题似乎是我所做的一切都是从一个片段开始的 我的问题是如何将基本ListView

虽然我是一名多年的开发人员,但我对Java/Android和整个OOP都是新手。。。是的,我们仍然存在。。。步履蹒跚的遗物,一个更连续的时代。。。!! 无论如何,我有一个片段,它调用游标适配器来填充ListView

ListView有几个文本视图,每行有两个按钮

到目前为止,我一直在尝试在每个按钮上设置侦听器,但没有成功。。。 我搜索了这个论坛(和其他论坛),并使用了一些由贡献者推荐的代码

从我的研究来看,我最大的问题似乎是我所做的一切都是从一个片段开始的

我的问题是如何将基本ListView id从片段传递到适配器

我的ListView子XML



我的适配器代码




好了,伙计们……就这样。。。。希望您能提供帮助

您需要将问题浓缩下来,因为目前还不清楚您在问什么,而只是抛出了一堆代码。请尝试创建一个可复制的最小测试用例,并清楚地陈述您的问题。@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);
    }
};

}