我的列表视图项中有一些条目。我有一个简单的按钮" (不像facebook那样按钮)。你可以看到上面提到的SCREENSHOT;供参考。 我点击按钮的那一刻;我想要更改类似的按钮颜色,并且当我再次登录时,类似的按钮颜色应保持相同(更改为)。
此外,所有条目必须使用json,使用cust_id,bus_id,Offer_id填充数据库;我非常清楚。
当我再次点击相同的按钮(如按钮)时,其颜色已被更改。必须将其更改回默认颜色,并且必须从数据库中删除数据。
我该怎么做......? 1.如何获得点击按钮的价值。 2.如何将更改的颜色恢复为默认值;重新点击按钮后。
Plz建议我......
这是按钮代码
holder.b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (clicked) {
holder.b1.setBackgroundResource(R.drawable.like_icon_hover);
} else {
holder.b1.setBackgroundResource(R.drawable.like_icon);
}
clicked = true;
}
});
答案 0 :(得分:2)
您需要为按钮添加一个监听器并使用ValueAnimator,您可以更改按钮颜色,并在再次单击时将其反转。
这是实现您的方案的简单而最好的方法。为列表项中的按钮添加onClick监听器,如下所示..我已解释了每一行..
// set a default background color to the button
placeHolder.likeButton.setBackgroundColor(Color.RED);
placeHolder.likeButton.setOnClickListener(new View.OnClickListener() {
ValueAnimator buttonColorAnim = null; // to hold the button animator
@Override
public void onClick(View v) {
// first time this will be null
if(buttonColorAnim != null){
// reverse the color
buttonColorAnim.reverse();
// reset for next time click
buttonColorAnim = null;
// add your code here to remove from database
}
else {
final Button button = (Button) v;
// create a color value animator
buttonColorAnim = ValueAnimator.ofObject(new ArgbEvaluator(), Color.RED, Color.BLUE);
// add a update listener for the animator.
buttonColorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animator) {
// set the background color
button.setBackgroundColor((Integer) animator.getAnimatedValue());
}
});
// you can also set a delay before start
//buttonColorAnim.setStartDelay(2000); // 2 seconds
// start the animator..
buttonColorAnim.start();
// add your code here to add to database
}
}
});
这将更改第一次单击时的按钮颜色,然后在下次单击时将颜色恢复。您还可以设置延迟以更改颜色。
注意:您必须根据逻辑设置默认按钮颜色。
答案 1 :(得分:2)
@Override
public void onClick(View view) {
if(!check)
{
personViewHolder.img_like_job.setImageResource(R.drawable.ic_thumbsup_blue);
check = true;
}
else
{
personViewHolder.img_like_job.setImageResource(R.drawable.ic_thumbsup);
check = false;
}
}
答案 2 :(得分:0)
您可以使用自定义适配器作为列表视图(它有自己的layout.xml),您可以在其中设置clicklistener。
您可以更改颜色或所需内容。实际上我确实有你喜欢的项目。如果你不能做的话,我会设置一些链接。
答案 3 :(得分:0)
试试这个链接:
ListView elements with multiple clickable buttons,
Using lists in Android (ListView) - Tutorial
对此的解决方案实际上比我想象的要容易。您可以在自定义适配器的getView()方法中添加一个setOnClickListener(),用于您正在使用的按钮。
答案 4 :(得分:0)
请尝试以下操作:
setOnClickListener()
上使用button
。例如
viewHolder.imgVwFbLike.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
// TODO :
// 1. make webservice call to update like status (Assuming a web service call)
// 2. Implement a callback for webservice call, to get the status of request.
if(success)
a) change the colour of like btn. and insert the data in Db.
b) Also maintain a column in db for likestatus(by default set it false).
}
}
);