2016-03-07 64 views
1

我有一个关于图片点击问题的问题:关于图片点击问题

我使用了粘粘的视差效果,在此我Viewpager是不工作的点击。 我的要求是,如果用户点击,那么他应该重定向到另一个页面。我正在使用this链接。

我使用Viewpager而不是Imageview,而Viewpager有一些图像滑动。 多数民众赞成没有Working.I得到一个数组的图像。

任何想法,我错了吗?

谢谢。

My Code: 
public class MainActivity extends ActionBarActivity { 

private TextView stickyView; 
private ListView listView; 
private View heroImageView; 

private View stickyViewSpacer; 

private int MAX_ROWS = 20; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    /* Initialise list view, hero image, and sticky view */ 
    listView = (ListView) findViewById(R.id.listView); 
    heroImageView = findViewById(R.id.heroImageView); 
    stickyView = (TextView) findViewById(R.id.stickyView); 

    heroImageView.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(CollectionDetailActivity.this, "click", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    /* Inflate list header layout */ 
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View listHeader = inflater.inflate(R.layout.list_header, null); 
    stickyViewSpacer = listHeader.findViewById(R.id.stickyViewPlaceholder); 

    /* Add list view header */ 
    listView.addHeaderView(listHeader); 

    /* Handle list View scroll events */ 
    listView.setOnScrollListener(new AbsListView.OnScrollListener() { 

     @Override 
     public void onScrollStateChanged(AbsListView view, int scrollState)   { 
     } 

     @Override 
     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 

      /* Check if the first item is already reached to top.*/ 
      if (listView.getFirstVisiblePosition() == 0) { 
       View firstChild = listView.getChildAt(0); 
       int topY = 0; 
       if (firstChild != null) { 
        topY = firstChild.getTop(); 
       } 

       int heroTopY = stickyViewSpacer.getTop(); 
       stickyView.setY(Math.max(0, heroTopY + topY)); 

       /* Set the image to scroll half of the amount that of ListView */ 
       heroImageView.setY(topY * 0.5f); 
      } 
     } 
    }); 


    /* Populate the ListView with sample data */ 
    List<String> modelList = new ArrayList<>(); 
    for (int i = 0; i < MAX_ROWS; i++) { 
     modelList.add("List item " + i); 
    } 

    ArrayAdapter adapter = new ArrayAdapter(this, R.layout.list_row, modelList); 
    listView.setAdapter(adapter); 
} 
} 
+0

你加点击事件Imageview? –

+0

是的,我认为它的效果就是为什么它不点击 –

+0

在这里发表你的代码。 –

回答

0

检查并查看有关ImageView的层次结构,ListView和单击事件将是由ListView的处理。 ListView上的StickyView。如果您需要处理单击事件ImageView,则可以使用ListView的单击事件空间项(list_header布局)。

更改:

heroImageView.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(CollectionDetailActivity.this, "click", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

代码如下:

stickyView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(MainActivity.this, "stickyView clicked", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

并添加此处理点击的ImageView的事件:

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     if (position == 0) { 
      Toast.makeText(MainActivity.this, "heroImageView clicked", Toast.LENGTH_SHORT).show(); 
     } else { 
      //ListView item clicked 
     } 
    } 
}); 

Complete code

+0

我使用Viewpager而不是Imageview,那我该如何管理这个场景呢? –