Android 更新标题ListView中的TextView
我试图更新我的Android 更新标题ListView中的TextView,android,listview,getview,Android,Listview,Getview,我试图更新我的TextView当我的oninclick事件触发时,我有几个TextView,它们是在我的行模板中创建的,但问题是,当我试图设置这个TextView值时,它实际上被设置了,但另一个TextView也被设置了,我有同样的价值观,知道为什么要这样做,但不知道如何修复它 我的想法是: 在我的getRowView方法中(当我滚动列表时),我看到一个 不寻常的行为,一旦我给我的一个iTen设置了一些值,它 继续更改获取此值的文本视图。所以我想这里是 问题的核心 PS:我正在使用这个组件,
TextView
当我的oninclick
事件触发时,我有几个TextView,它们是在我的行模板中创建的,但问题是,当我试图设置这个TextView
值时,它实际上被设置了,但另一个TextView也被设置了,我有同样的价值观,知道为什么要这样做,但不知道如何修复它
我的想法是:
- 在我的
方法中(当我滚动列表时),我看到一个 不寻常的行为,一旦我给我的一个iTen设置了一些值,它 继续更改获取此值的文本视图。所以我想这里是 问题的核心getRowView
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import br.com.soutsapp.souts.R;
import br.com.soutsapp.souts.model.Menu;
import br.com.soutsapp.souts.model.Product;
import br.com.soutsapp.souts.model.modelview.OrderItem;
import br.com.soutsapp.souts.userInterface.activity.SectionAdapter;
import br.com.soutsapp.souts.userInterface.adapter.HeaderListView;
public class MenuFragment extends Fragment {
private Context mContext;
private List<OrderItem> itens;
private Menu menu;
public MenuFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_menu, container, false);
mContext = getContext();
itens = new ArrayList<>();
menu = new Menu();
final String[] sec1 = {"aaaaaaaa","aaaaaaaa","aaaaaaaa","aaaaaaaa","aaaaaaaa","aaaaaaaa","aaaaaaaa"};
final String[] sec2 = {"bbbbbbbb","bbbbbbbb","bbbbbbbb","bbbbbbbb","bbbbbbbb","bbbbbbbb","bbbbbbbb"};
final String[] sec3 = {"cccccccc","cccccccc","cccccccc","cccccccc","cccccccc","cccccccc","cccccccc"};
final String[] sec4 = {"dddddddd","dddddddd","dddddddd","dddddddd","dddddddd","dddddddd","dddddddd"};
HeaderListView lv = (HeaderListView) v.findViewById(R.id.lv_menu_items);
lv.setAdapter(new SectionAdapter() {
@Override
public int numberOfSections() {
return menu.getMenuSessions().size();
}
@Override
public int numberOfRows(int section) {
return menu.getMenuSessions().get(section).size();
}
@Override
public Object getRowItem(int section, int row) {
return menu.getMenuSessions().get(section).get(row);
}
@Override
public boolean hasSectionHeaderView(int section) {
return true;
}
@Override
public View getRowView(int section, int row, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getActivity().getLayoutInflater().inflate(getResources().getLayout(R.layout.menu_item_row), null);
}
//Product product = (Product)getRowItem(section, row);
//convertView.setId(product.getId());
TextView tvMenuItemName = (TextView) convertView.findViewById(R.id.tv_menu_item_name);
TextView tvMenuItemPrice = (TextView) convertView.findViewById(R.id.tv_price);
String itemName = ((Product)getRowItem(section,row)).getName();
tvMenuItemName.setText(itemName);
String itemPrice = String.valueOf(((Product) getRowItem(section, row)).getPrice());
tvMenuItemPrice.setText(itemPrice);
final int mySection = section;
final int myRow = row;
final TextView tvQuantity = (TextView) convertView.findViewById(R.id.tv_quantity);
tvQuantity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Product product = (Product) getRowItem(mySection, myRow);
if (tvQuantity.getText().equals("1") && !tvQuantity.getText().equals("")){
tvQuantity.setText("");
OrderItem itenToRemove = null;
for(OrderItem item: itens){
if(item.getProductId() == product.getId()){
itenToRemove = item;
break;
}
}
itens.remove(itenToRemove);
}
else{
for(OrderItem item: itens){
if(item.getProductId() == product.getId()){
int quantity = item.getQuantity();
item.setQuantity(--quantity);
tvQuantity.setText(String.valueOf(item.getQuantity()));
break;
}
}
}
}
});
return convertView;
}
@Override
public int getSectionHeaderViewTypeCount() {
return 1;
}
@Override
public int getSectionHeaderItemViewType(int section) {
return section % 1;
}
@Override
public View getSectionHeaderView(int section, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = (TextView) getActivity().getLayoutInflater().inflate(getResources().getLayout(android.R.layout.simple_list_item_1), null);
}
if (getSectionHeaderItemViewType(section) == 0) {
((TextView) convertView).setText("Header for section " + section);
} else {
((TextView) convertView.findViewById(android.R.id.text1)).setText("Header for section " + section);
}
switch (section) {
case 0:
convertView.setBackgroundColor(getResources().getColor(R.color.Blue_Jay));
break;
case 1:
convertView.setBackgroundColor(getResources().getColor(R.color.Yellow));
break;
case 2:
convertView.setBackgroundColor(getResources().getColor(R.color.Red_Wine));
break;
}
return convertView;
}
@Override
public void onRowItemClick(AdapterView<?> parent, View view, int section, int row, long id) {
super.onRowItemClick(parent, view, section, row, id);
//Product p = (Product)view.getTag();
TextView tvQuantity = (TextView) view.findViewById(R.id.tv_quantity);
Product p = menu.getMenuSessions().get(section).get(row);
//Product p = (Product) getRowItem(section, row);
boolean exist = false;
for(OrderItem item : itens){
if(item.getProductId() == p.getId()){
int actualQuantity = item.getQuantity();
item.setQuantity(++actualQuantity);
tvQuantity.setText(String.valueOf(item.getQuantity()));
exist = true;
}
}
if(!exist){
itens.add(new OrderItem(p.getId(), 1));
tvQuantity.setText("1");
}
}
});
return v;
}
导入android.content.Context;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.List;
进口br.com.soutsapp.souts.R;
导入br.com.soutsapp.souts.model.Menu;
导入br.com.soutsapp.souts.model.Product;
导入br.com.soutsapp.souts.model.modelview.OrderItem;
导入br.com.soutsapp.souts.userInterface.activity.SectionAdapter;
导入br.com.soutsapp.souts.userInterface.adapter.HeaderListView;
公共类MenuFragment扩展了片段{
私有上下文;
私有列表ITEN;
私人菜单;
公共菜单碎片(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment_菜单,容器,错误);
mContext=getContext();
itens=新的ArrayList();
菜单=新菜单();
最后一个字符串[]sec1={“aaaaaa”,“aaaaaaaa”,“aaaaaaaa”,“aaaaaaaa”,“aaaaaaaa”,“aaaaaaaa”,“aaaaaaaa”,“aaaaaaaaaa”};
最后一个字符串[]sec2={“bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb”};
最后一个字符串[]sec3={“中交”、“中交”、“中交”、“中交”、“中交”、“中交”、“中交”、“中交”、“中交”};
最后一个字符串[]sec4={“ddddddd”、“ddddddd”、“ddddddd”、“ddddddd”、“ddddddd”、“dddddddd”、“dddddd”};
HeaderListView lv=(HeaderListView)v.findViewById(R.id.lv\u菜单项);
lv.setAdapter(新的SectionAdapter(){
@凌驾
公共int numberOfSections(){
return menu.getMenuSessions().size();
}
@凌驾
公共整数行数(整数部分){
return menu.getMenuSessions().get(section.size();
}
@凌驾
公共对象getRowItem(int部分,int行){
return menu.getMenuSessions().get(节).get(行);
}
@凌驾
公共布尔值hasSectionHeaderView(内部部分){
返回true;
}
@凌驾
公共视图getRowView(int段、int行、视图转换视图、视图组父级){
if(convertView==null){
convertView=getActivity().GetLayoutFlater().inflate(getResources().getLayout(R.layout.menu\u item\u row),null);
}
//产品产品=(产品)getRowItem(节,行);
//setId(product.getId());
TextView tvMenuItemName=(TextView)convertView.findViewById(R.id.tv\u菜单项\u名称);
TextView tVMenUI价格=(TextView)convertView.findViewById(R.id.tv\U价格);
字符串itemName=((产品)getRowItem(节,行)).getName();
tvMenuItemName.setText(itemName);
String itemPrice=String.valueOf(((产品)getRowItem(节,行)).getPrice();
tvMenuItemPrice.setText(项目价格);
最终int mySection=截面;
final int myRow=行;
最终文本视图tvQuantity=(文本视图)convertView.findViewById(R.id.tv_数量);
tvQuantity.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
产品产品=(产品)getRowItem(mySection,myRow);
if(tvQuantity.getText().equals(“1”)&&!tvQuantity.getText().equals(“”){
tvQuantity.setText(“”);
OrderItem itenToRemove=null;
用于(订单项:itens){
如果(item.getProductId()==product.getId()){
itenToRemove=项目;
打破
}
}
itens.remove(itentomove);
}
否则{
用于(订单项:itens){
如果(item.getProductId()==product.getId()){
int数量=item.getQuantity();
项目.设置数量(--数量);
tvQuantity.setText(String.valueOf(item.getQuantity());
打破
}
}
}
}
});
返回视图;
}
@凌驾
public int getSectionHeaderServiceTypeCount(){
返回1;
}
@凌驾
公共int getSectionHeaderItemViewType(int节){
返回节%1;
}
@凌驾
公共视图getSectionHeaderView(int节、视图转换视图、视图组父视图){
if(convertView==null){
convertView=(TextView)getActivity().GetLayoutFlater().inflate(getResources().getLayout(android.R.layout.simple_list_item_1),null);
}
如果(getSectionHeaderItemViewType(section)==0){
((文本视图)