0

我也有一个带有图像和链接功能的列表视图,现在我需要的是我想在列表视图中的每个项目中创建一个按钮,如果我单击按钮它必须进行另一个活动,在该活动页面中它必须单击按钮分别打开一个xml文件,我将预先在列表视图java文件中硬编码xml文件的详细信息,如何做到这一点。

public class SouthIndianvegrecipes  extends Activity {

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main1);

        ArrayList<Recipedetails1> image_details = GetSearchResults();

        final ListView lv1 = (ListView) findViewById(R.id.listV1_main);
        lv1.setAdapter(new ItemListBaseAdapter1(this, image_details));

        lv1.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
                Object o = lv1.getItemAtPosition(position);
                Recipedetails1 obj_itemDetails = (Recipedetails1)o;
                Toast.makeText(SouthIndianvegrecipes.this, "You have chosen : " + " " + obj_itemDetails.getName1(), Toast.LENGTH_LONG).show();


            } 
        });
    }

    private ArrayList<Recipedetails1> GetSearchResults(){
        ArrayList<Recipedetails1> results = new ArrayList<Recipedetails1>();

        Recipedetails1 item_details = new Recipedetails1();
        item_details.setName1("Vegterian");
        item_details.setItemDescription1("Recipes made by raw materials");
        item_details.setUrlWiki("https://www.youtube.com/watch?v=C_r0mFvMSfU");
        item_details.setImageNumber1(1);
        results.add(item_details);

        item_details = new Recipedetails1();
        item_details.setName1("Non-Vegterian");
        item_details.setItemDescription1("Flesh of sweet animals");
        item_details.setUrlWiki("https://www.youtube.com/watch?v=C_r0mFvMSfU");
        item_details.setImageNumber1(2);
        results.add(item_details);

        item_details = new Recipedetails1();
        item_details.setName1("Pickels");
        item_details.setItemDescription1("Touchable dish  by Homemade");
        item_details.setUrlWiki("https://www.youtube.com/watch?v=C_r0mFvMSfU");
        item_details.setImageNumber1(3);
        results.add(item_details);

        item_details = new Recipedetails1();
        item_details.setName1("Soups");
        item_details.setItemDescription1("Startup for our food");
        item_details.setUrlWiki("https://www.youtube.com/watch?v=C_r0mFvMSfU");
        item_details.setImageNumber1(4);
        results.add(item_details);




        return results;
    }

}

4

3 回答 3

1

您只需要像这样在 ItemListBaseAdapter1 的 getView() 方法中为按钮设置 OnClickListener 。

    class ItemListBaseAdapter1 extends BaseAdapter
    {

    private Activity mActivity;
    public ItemListBaseAdapter1(Activity activity, ...)
    {
        mActivity = activity;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        // TODO: get view here
        final Recipedetails1 item = (Recipedetails1) getItem(position);
        theButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v)
            {
                Intent intent = new Intent(mActivity, [your activity class]);
                intent.putExtra("The Link Key", item.getUrlWiki());
                mActivity.startActivity(intent);
            }
        });
        return view;
    }

}

在目标活动上,您可以通过以下方式获得链接:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    String link = getIntent.getString("The Link Key", null);
}
于 2013-03-07T04:41:56.990 回答
0

正如您所说,您在列表的列表项中有一个按钮。如您所知,在按钮单击侦听器上,您在 onclicklistener 方法中获得了视图

新的 OnClickListener()
{
@Override
public void onClick(View view)
{}
}

这里 view 有一个 getparent() 方法,它会返回一个设置了按钮的视图。您可以通过在日志中打印来检查它。如果您有按钮的父级,那么您还可以获得父级的所有子视图,其中 1 个子视图是按钮。从所有子视图中,您可以获得在下一个活动中发送它们的值。如果按钮的父级在列表项视图中有另一个父级,那么您也可以通过调用 getparent() 方法来获取父级视图的父级。

请记住,视图有父子关系,所以如果你想要所有的孩子,那么你必须得到父母。

于 2013-03-07T04:51:11.640 回答
0

你需要添加android:descendantFocusability="blocksDescendants"

我刚刚从这里找到了解决方案

https://stackoverflow.com/a/14372750/1136023

用它来传递你的包含intent.putExtra("TAG", Data);

于 2013-03-07T03:45:41.903 回答