【问题标题】:How to make clickable image in horizontal scroll view?如何在水平滚动视图中制作可点击的图像?
【发布时间】:2015-09-04 08:42:07
【问题描述】:

我有一个滚动视图,它提供来自数据库的图像,并在滚动视图中动态创建图像视图。我想在选择它显示在另一个活动或更大的图像时。

这是我的代码:

public class MainActivity extends Activity{
private DatabaseH db;
private Bitmap[] ax;
ImageView im;
int i;
String table="main";
String noeDastor="کار با فایل";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    db = new DatabaseH(this);
    db.useable();
    refresher();
    LinearLayout yourLayout = (LinearLayout)findViewById(R.id.ll1);
    for ( i = 0; i < ax.length; i++) {
    im=new ImageView(getApplicationContext());
    im.setImageBitmap(ax[i]);
    yourLayout.addView(im,700,500);

}
    OnClickListener on=new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent=new Intent();
            intent.putExtra("integer", i);
            intent.putExtra("table", table);
            intent.putExtra("noeDastor", noeDastor);
            startActivity(intent);
        }
    };
}

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
private void refresher(){
    db.open();
    int save = db.shomaresh_field(table,noeDastor);
    ax = new Bitmap[save];

    for (int i = 0; i <save; i++) {
        ax[i] = db.retrive(table,noeDastor,i);  
    }
    db.close();
}

【问题讨论】:

    标签: android scrollview items


    【解决方案1】:

    将 RecyclerView 与 LinearLayoutManager 一起使用,并像这样设置水平方向:

    LinearLayoutManager layoutManager
        = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
    
    RecyclerView rvSlide = (RecyclerView) findViewById(R.id.rvSlide);
    rvSlide.setLayoutManager(layoutManager);
    

    使用 ImageView 作为 RecyclerView 项目,并在适配器中处理 ImageView 上的onClickListner,然后你就得到你想要的。

    【讨论】:

    • RecyclerView 不在 eclipse 中。是否有特殊的库??
    • @shayan talaei 是的,您需要使用 Android Support Library v7 for Recycler。可在您的 sdk 文件夹中找到。只需要在eclipse中导入并使用即可。
    【解决方案2】:

    在每个添加视图的 for 循环中,您应该将 imageView Id 设置为 0、1、2 等。随你喜欢

    imageView.setId(i);
    

    然后你通过使用得到 id

    imageView.getId();
    

    在你的 imageView.onClickListener 回调中使用并查找已执行的点击

    【讨论】:

    • tnx 但我有点困惑。如何使用从 getId() 获得的 id
    • 我想选择一张图片,然后它会转到另一个活动。如何做到这一点??
    • 因为每个视图都有 setId() 和 getId() 的方法,这对动态视图的创建非常有益,并给出和 id 作为标识符。我已经在你的类型情况下使用了相同的概念。
    猜你喜欢
    • 2020-10-13
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多