Android 碎片列表-尝试更改项目背景颜色
我正在尝试更改FragmentList项目背景色,单击此项目后,会显示一个确认警报对话框,它可以工作,但正在更改clicled项目旁边的其他项目。。。。 这是我下面所有的代码Android 碎片列表-尝试更改项目背景颜色,android,listview,setbackground,Android,Listview,Setbackground,我正在尝试更改FragmentList项目背景色,单击此项目后,会显示一个确认警报对话框,它可以工作,但正在更改clicled项目旁边的其他项目。。。。 这是我下面所有的代码 public class RefrigeranteFragment extends ListFragment { // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e
public class RefrigeranteFragment extends ListFragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
// TODO: Rename and change types of parameters
private String mParam1;
private String mParam2;
public View SelectedView;
String[] refrigerantes = new String[] {
"Coca Cola",
"Coca Cola Zero",
"Fanta Uva",
"Guaraná Antartica",
"Guaraná Antartica Zero",
"Sukita",
"Sukita Laranja",
"Sprite",
"Guaraná Antartica",
"Sukita Uva"
};
// Array of strings to store currencies
String[] precos = new String[]{
"02,50",
"03,00",
"02,00",
"04,50",
"02,50",
"03,45",
"01,50",
"03,90",
"07,00",
"04,50"
};
int[] icones = new int[]{
R.drawable.ic_coca_lata,
R.drawable.ic_coca_zero_lata,
R.drawable.ic_fanta_uva_lata,
R.drawable.ic_guarana_antartica_lata,
R.drawable.ic_guarana_antartica_zero_lata,
R.drawable.ic_sukita_uva_lata,
R.drawable.ic_sukita_laranja_lata,
R.drawable.ic_sprite_lata,
R.drawable.ic_guarana_antartica_pet,
R.drawable.ic_sukita_uva_pet
};
private OnFragmentInteractionListener mListener;
public RefrigeranteFragment() {
// Required empty public constructor
}
// TODO: Rename and change types and number of parameters
public static RefrigeranteFragment newInstance(String param1, String param2) {
RefrigeranteFragment fragment = new RefrigeranteFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < 10; i++){
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("txtNome", refrigerantes[i]);
hm.put("txtPreco", precos[i]);
hm.put("img_refrigerante", Integer.toString(icones[i]));
aList.add(hm);
}
String[] from = {"img_refrigerante", "txtNome", "txtPreco"};
int[] to = {R.id.img_refrigerante, R.id.txtNome, R.id.txtPreco};
SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), aList, R.layout.listview_refrigerante_layout, from, to);
setListAdapter(adapter);
// Inflate the layout for this fragment
return super.onCreateView(inflater, container, savedInstanceState);
}
// TODO: Rename method, update argument and hook method into UI event
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) {
mListener = (OnFragmentInteractionListener) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onListItemClick(ListView listView, View view, int position, long id){
super.onListItemClick(listView, view, position, id);
final View v = view;
final TextView txt = (TextView)view.findViewById(R.id.txtNome);
final ImageView imageView = (ImageView)view.findViewById(R.id.img_refrigerante);
final TextView tvQuantity = (TextView)view.findViewById(R.id.txtQtde);
final TextView lblQuantity = (TextView)view.findViewById(R.id.lblQtde);
final NumberPicker txtQtde = new NumberPicker(getContext());
txtQtde.setMinValue(1);
txtQtde.setMaxValue(10);
if(tvQuantity.getText() != "")
txtQtde.setValue(Integer.parseInt(tvQuantity.getText().toString()));
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(txt.getText());
builder.setMessage("Informe a quantidade");
builder.setIcon(imageView.getDrawable());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
txtQtde.setLayoutParams(lp);
builder.setView(txtQtde);
builder.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tvQuantity.setText(String.valueOf(txtQtde.getValue()));
tvQuantity.setVisibility(View.VISIBLE);
lblQuantity.setVisibility(View.VISIBLE);
v.setBackgroundColor(Color.parseColor("#FF9933"));
((TextView)v.findViewById(R.id.lblNome)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.txtNome)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.lblPreco)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.txtPreco)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.lblQtde)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.txtQtde)).setTextColor(Color.WHITE);
}
});
builder.setNegativeButton("Cancelar",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}
);
builder.show();
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
void onFragmentInteraction(Uri uri);
}
公共类制冷剂折射扩展列表片段{
//TODO:重命名参数参数,选择匹配的名称
//片段初始化参数,例如ARG_ITEM_NUMBER
私有静态最终字符串ARG_PARAM1=“PARAM1”;
私有静态最终字符串ARG_PARAM2=“PARAM2”;
//TODO:重命名和更改参数类型
私有字符串mParam1;
私有字符串mParam2;
公共视图选择视图;
字符串[]制冷剂=新字符串[]{
“可口可乐”,
“零度可口可乐”,
“芬达乌瓦”,
“瓜拉安塔提卡”,
“瓜拉安塔提卡零号”,
“Sukita”,
“Sukita Laranja”,
“精灵”,
“瓜拉安塔提卡”,
“Sukita Uva”
};
//存储货币的字符串数组
字符串[]precos=新字符串[]{
"02,50",
"03,00",
"02,00",
"04,50",
"02,50",
"03,45",
"01,50",
"03,90",
"07,00",
"04,50"
};
int[]图标=新的int[]{
R.drawable.ic_coca_lata,
R.drawable.ic_coca_zero_lata,
R.drawable.ic_fanta_uva_lata,
R.drawable.ic_guarana_antartica_lata,
R.drawable.ic_guarana_antartica_zero_lata,
R.drawable.ic_sukita_uva_lata,
R.drawable.ic_sukita_laranja_lata,
R.drawable.ic_sprite_lata,
R.drawable.ic_guarana_antartica_宠物,
R.drawable.ic_sukita_uva_宠物
};
私有OnFragmentInteractionListener mListener;
公共制冷剂泄漏(){
//必需的空公共构造函数
}
//TODO:重命名和更改参数的类型和数量
公共静态制冷剂制冷新实例(字符串参数1,字符串参数2){
制冷剂折射碎片=新制冷剂折射();
Bundle args=新Bundle();
args.putString(ARG_PARAM1,PARAM1);
args.putString(ARG_PARAM2,PARAM2);
fragment.setArguments(args);
返回片段;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
如果(getArguments()!=null){
mParam1=getArguments().getString(ARG_PARAM1);
mParam2=getArguments().getString(ARG_PARAM2);
}
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
列表列表=新的ArrayList();
对于(int i=0;i<10;i++){
HashMap hm=新的HashMap();
hm.put(“txtNome”,制冷剂[i]);
hm.put(“txtPreco”,precos[i]);
hm.put(“img_制冷剂”,Integer.toString(icones[i]);
添加(hm);
}
字符串[]from={“img_制冷剂”、“txtNome”、“txtPreco”};
int[]to={R.id.img_制冷剂,R.id.txtNome,R.id.txtPreco};
SimpleAdapter=新SimpleAdapter(getActivity().getBaseContext(),aList,R.layout.listview\u制冷剂\u布局,from,to);
setListAdapter(适配器);
//为该碎片膨胀布局
返回super.onCreateView(充气机、容器、savedInstanceState);
}
//TODO:重命名方法、更新参数并将方法挂接到UI事件中
public void onButtonPressed(Uri){
if(mListener!=null){
onFragmentInteraction(uri);
}
}
@凌驾
公共void-onAttach(上下文){
super.onAttach(上下文);
if(OnFragmentInteractionListener的上下文实例){
mListener=(OnFragmentInteractionListener)上下文;
}否则{
抛出新的RuntimeException(context.toString()
+“必须实现OnFragmentInteractionListener”);
}
}
@凌驾
public void onListItemClick(ListView ListView、视图视图、int位置、长id){
super.onListItemClick(列表视图、视图、位置、id);
最终视图v=视图;
final TextView txt=(TextView)view.findviewbyd(R.id.txtNome);
最终ImageView=(ImageView)view.findViewById(R.id.img_制冷剂);
final TextView tvQuantity=(TextView)view.findViewById(R.id.txtQtde);
final TextView lblQuantity=(TextView)view.findViewById(R.id.lblQtde);
final NumberPicker txtQtde=新NumberPicker(getContext());
txtQtde.setMinValue(1);
txtQtde.setMaxValue(10);
if(tvQuantity.getText()!=“”)
setValue(Integer.parseInt(tvQuantity.getText().toString());
AlertDialog.Builder=新建AlertDialog.Builder(getContext());
setTitle(txt.getText());
setMessage(“informeaquantidade”);
setIcon(imageView.getDrawable());
LinearLayout.LayoutParams lp=新的LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_父级,
LinearLayout.LayoutParams.MATCH_PARENT);
txtQtde.setLayoutParams(lp);
builder.setView(txtQtde);
builder.setPositiveButton(“确定”,
新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
tvQuantity.setText(String.valueOf(txtQtde.getValue());
tvQuantity.setVisibility(View.VISIBLE);
lblQuantity.setVisibility(View.VISIBLE);
v、 setBackgroundColor(Color.parseColor(#FF9933”);
((TextView)v.findViewById(R.id.lblNome)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.txtNome)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.lblPreco)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.txtPreco)).setTextColor(Color.WHITE);
((TextView)v.findviewbyd(R.id.lblQtde)).setTextColor(Color.WHITE);
((TextView)v.findViewById(R.id.txtQtde)).setTextColor(Color.WHITE);
}
});
builder.setNegativeButton(“取消”,
新建DialogInterface.OnClickListener(){
@凌驾
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<ImageView
android:id="@+id/img_refrigerante"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/pizza_fragment"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:src="@drawable/ic_menu_pizza2" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_below="@+id/img_refrigerante" >
<TextView
android:id="@+id/lblNome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Refrigerante: "
android:textStyle="bold"
android:textSize="15dp"
android:layout_below="@id/img_pizza" />
<TextView
android:id="@+id/txtNome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:layout_toRightOf="@+id/lblNome" />
<TextView
android:id="@+id/lblPreco"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Preço: "
android:textStyle="bold"
android:textSize="15dp"
android:layout_below="@+id/txtNome" />
<TextView
android:id="@+id/txtPreco"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:layout_toRightOf="@+id/lblPreco"
android:layout_below="@+id/txtNome" />
<TextView
android:id="@+id/lblQtde"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Qtde.: "
android:textStyle="bold"
android:textSize="15dp"
android:visibility="invisible"
android:layout_below="@+id/txtPreco" />
<TextView
android:id="@+id/txtQtde"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:visibility="invisible"
android:layout_toRightOf="@+id/lblQtde"
android:layout_below="@+id/txtPreco" />
</RelativeLayout>
</RelativeLayout>
public static class MyListAdapter extends BaseAdapter {
private String[] mNames;
private String[] mPrices;
private int[] mIcons;
private int[] mQtys;
private boolean[] mClicked;
public MyListAdapter(String[] names, String[] prices, int[] icons) {
mNames = names;
mPrices = prices;
mIcons = icons;
mQtys = new int[names.length];
mClicked = new boolean[names.length];
}
@Override
public int getCount() {
return mNames.length;
}
@Override
public Object getItem(int position) {
return mNames[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.listview_refrigerante_layout, parent, false);
}
ImageView icon = (ImageView) convertView.findViewById(R.id.img_refrigerante);
icon.setImageResource(mIcons[position]);
TextView name = (TextView) convertView.findViewById(R.id.txtNome);
name.setText(mNames[position]);
TextView price = (TextView) convertView.findViewById(R.id.txtPreco);
price.setText(mPrices[position]);
// hide these if qty == 0
TextView qty = (TextView) convertView.findViewById(R.id.txtQtde);
qty.setText(mQtys[position]);
qty.setVisibility(mQtys[position] == 0 ? View.INVISIBLE : View.VISIBLE);
TextView qtyLbl = (TextView) convertView.findViewById(R.id.lblQtde);
qtyLbl.setVisibility(mQtys[position] == 0 ? View.INVISIBLE : View.VISIBLE);
// here is where we use the clicked flag to determine which colors to set
// TODO put a real color for backgroundColorNormal because I don't know what your normal background color is
int backgroundColor = mClicked[position] ? Color.parseColor("#FF9933") : backgroundColorNormal;
convertView.setBackgroundColor(backgroundColor);
// TODO put a real color for colorNormal because I don't know what your normal text color is
int textColor = mClicked[position] ? Color.WHITE : colorNormal;
((TextView) convertView.findViewById(R.id.lblNome)).setTextColor(textColor);
((TextView) convertView.findViewById(R.id.txtNome)).setTextColor(textColor);
((TextView) convertView.findViewById(R.id.lblPreco)).setTextColor(textColor);
((TextView) convertView.findViewById(R.id.txtPreco)).setTextColor(textColor);
((TextView) convertView.findViewById(R.id.lblQtde)).setTextColor(textColor);
((TextView) convertView.findViewById(R.id.txtQtde)).setTextColor(textColor);
return convertView;
}
public int getQty(int position) {
return mQtys[position];
}
public void setQty(int position, int qty) {
mQtys[position] = qty;
notifyDataSetChanged();
}
public void setClicked(int position, boolean clicked) {
mClicked[position] = clicked;
notifyDataSetChanged();
}
}
private MyListAdapter mAdapter;
mAdapter = new MyListAdapter(refrigerantes, precos, icones);
setListAdapter(mAdapter);
@Override
public void onListItemClick(ListView listView, View view, final int position, long id){
super.onListItemClick(listView, view, position, id);
final NumberPicker txtQtde = new NumberPicker(getContext());
txtQtde.setMinValue(1);
txtQtde.setMaxValue(10);
txtQtde.setValue(Integer.parseInt(mAdapter.getQty(position)));
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(refrigerantes[position]);
builder.setMessage("Informe a quantidade");
builder.setIcon(icones[position]);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
txtQtde.setLayoutParams(lp);
builder.setView(txtQtde);
builder.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mAdapter.setQty(position, txtQtde.getValue());
mAdapter.setClicked(position);
}
});
builder.setNegativeButton("Cancelar",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}
);
builder.show();
}