Java 显示android中Redundent数据的列表视图
很抱歉再次问这个问题,但我在上一个问题中没有得到任何解决方案,所以请重试 在emulator上构建和运行项目时,我会获得重复的数据 这是我的密码 railcode.javaJava 显示android中Redundent数据的列表视图,java,android,android-listview,android-listfragment,Java,Android,Android Listview,Android Listfragment,很抱歉再次问这个问题,但我在上一个问题中没有得到任何解决方案,所以请重试 在emulator上构建和运行项目时,我会获得重复的数据 这是我的密码 railcode.java public class RailCode extends Activity implements OnItemClickListener { String[] member_names; String[] contactType; List<RowCode> rowCode; ListView mylist
public class RailCode extends Activity implements OnItemClickListener {
String[] member_names;
String[] contactType;
List<RowCode> rowCode;
ListView mylistview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.railcode);
rowCode = new ArrayList<RowCode>();
member_names = getResources().getStringArray(R.array.member_names);
contactType = getResources().getStringArray(R.array.contactType);
for (int i = 0; i < member_names.length; i++) {
RowCode code = new RowCode(member_names[i],contactType[i]);
rowCode.add(code);
}
mylistview = (ListView) findViewById(R.id.list);
CustomAdapter adapter = new CustomAdapter(this, rowCode);
mylistview.setAdapter(adapter);
mylistview.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String member_name = rowCode.get(position).getMember_name();
Toast.makeText(getApplicationContext(), "" + member_name,
Toast.LENGTH_SHORT).show();
}
}
public class CustomAdapter extends BaseAdapter {
Context context;
List<RowCode> rowItems;
public CustomAdapter(Context context, List<RowCode> rowItems) {
this.context = context;
this.rowItems = rowItems;
}
@Override
public int getCount() {
return rowItems.size();
}
@Override
public Object getItem(int position) {
return rowItems.get(position);
}
@Override
public long getItemId(int position) {
return rowItems.indexOf(getItem(position));
}
/* private view holder class */
private class ViewHolder {
TextView member_name;
TextView contactType;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_code, null);
holder = new ViewHolder();
holder.member_name = (TextView) convertView
.findViewById(R.id.member_name);
holder.contactType = (TextView) convertView
.findViewById(R.id.contact_type);
RowCode row_pos = rowItems.get(position);
holder.member_name.setText(row_pos.getMember_name());
holder.contactType.setText(row_pos.getContactType());
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
}
public类RailCode扩展活动实现了一个新的监听器{
字符串[]成员名称;
字符串[]联系人类型;
列出行代码;
列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.railcode);
rowCode=newarraylist();
member\u names=getResources().getStringArray(R.array.member\u names);
contactType=getResources().getStringArray(R.array.contactType);
for(int i=0;i
CustonAdapter.java
public class RailCode extends Activity implements OnItemClickListener {
String[] member_names;
String[] contactType;
List<RowCode> rowCode;
ListView mylistview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.railcode);
rowCode = new ArrayList<RowCode>();
member_names = getResources().getStringArray(R.array.member_names);
contactType = getResources().getStringArray(R.array.contactType);
for (int i = 0; i < member_names.length; i++) {
RowCode code = new RowCode(member_names[i],contactType[i]);
rowCode.add(code);
}
mylistview = (ListView) findViewById(R.id.list);
CustomAdapter adapter = new CustomAdapter(this, rowCode);
mylistview.setAdapter(adapter);
mylistview.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
String member_name = rowCode.get(position).getMember_name();
Toast.makeText(getApplicationContext(), "" + member_name,
Toast.LENGTH_SHORT).show();
}
}
public class CustomAdapter extends BaseAdapter {
Context context;
List<RowCode> rowItems;
public CustomAdapter(Context context, List<RowCode> rowItems) {
this.context = context;
this.rowItems = rowItems;
}
@Override
public int getCount() {
return rowItems.size();
}
@Override
public Object getItem(int position) {
return rowItems.get(position);
}
@Override
public long getItemId(int position) {
return rowItems.indexOf(getItem(position));
}
/* private view holder class */
private class ViewHolder {
TextView member_name;
TextView contactType;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_code, null);
holder = new ViewHolder();
holder.member_name = (TextView) convertView
.findViewById(R.id.member_name);
holder.contactType = (TextView) convertView
.findViewById(R.id.contact_type);
RowCode row_pos = rowItems.get(position);
holder.member_name.setText(row_pos.getMember_name());
holder.contactType.setText(row_pos.getContactType());
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
return convertView;
}
}
公共类CustomAdapter扩展了BaseAdapter{
语境;
列出项目;
公共CustomAdapter(上下文,列表行项){
this.context=上下文;
this.rowItems=rowItems;
}
@凌驾
public int getCount(){
返回rowItems.size();
}
@凌驾
公共对象getItem(int位置){
返回行项目。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回rowItems.indexOf(getItem(position));
}
/*私有视图持有者类*/
私有类视窗持有者{
TextView成员名称;
文本视图联系人类型;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
LayoutInflater mInflater=(LayoutInflater)上下文
.getSystemService(活动.布局\充气机\服务);
if(convertView==null){
convertView=mInflater.充气(R.layout.list_代码,空);
holder=新的ViewHolder();
holder.member_name=(TextView)convertView
.findViewById(R.id.成员名称);
holder.contactType=(TextView)convertView
.findViewById(R.id.联系人类型);
RowCode row_pos=rowItems.get(位置);
holder.member_name.setText(row_pos.getMember_name());
holder.contactType.setText(row_pos.getContactType());
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
返回视图;
}
}
请帮助我,我无法理解它显示重复数据
提前谢谢!!!!!1公共类CustomAdapter扩展了BaseAdapter{
Context context;
List<RowCode> rowItems;
public CustomAdapter(Context context, List<RowCode> rowItems) {
this.context = context;
this.rowItems = rowItems;
}
@Override
public int getCount() {
return rowItems.size();
}
@Override
public Object getItem(int position) {
return rowItems.get(position);
}
@Override
public long getItemId(int position) {
return rowItems.indexOf(getItem(position));
}
/* private view holder class */
private class ViewHolder {
TextView member_name;
TextView contactType;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_code, null);
holder = new ViewHolder();
holder.member_name = (TextView) convertView
.findViewById(R.id.member_name);
holder.contactType = (TextView) convertView
.findViewById(R.id.contact_type);
RowCode row_pos = rowItems.get(position);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.member_name.setText(row_pos.getMember_name());
holder.contactType.setText(row_pos.getContactType());
return convertView;
}
}
语境;
列出项目;
公共CustomAdapter(上下文,列表行项){
this.context=上下文;
this.rowItems=rowItems;
}
@凌驾
public int getCount(){
返回rowItems.size();
}
@凌驾
公共对象getItem(int位置){
返回行项目。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回rowItems.indexOf(getItem(position));
}
/*私有视图持有者类*/
私有类视窗持有者{
TextView成员名称;
文本视图联系人类型;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
LayoutInflater mInflater=(LayoutInflater)上下文
.getSystemService(活动.布局\充气机\服务);
if(convertView==null){
convertView=mInflater.充气(R.layout.list_代码,空);
holder=新的ViewHolder();
holder.member_name=(TextView)convertView
.findViewById(R.id.成员名称);
holder.contactType=(TextView)convertView
.findViewById(R.id.联系人类型);
RowCode row_pos=rowItems.get(位置);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
holder.member_name.setText(row_pos.getMember_name());
holder.contactType.setText(row_pos.getContactType());
返回视图;
}
}
希望它能工作将
行代码
和保持架。*.setText()
行移动到if else
块之后,在返回
之前。这不是问题,帕雷什..谢谢你,迈克,我现在收到了,没有冗余数据:)迈克很早就来找我了,然后你要复制它answer@Paresh请再检查一下,你会发现。。我已经放置了RowCode row_pos=rowItems.get(position);行外部if-else条件。不能放置行代码行\u pos=rowItems.get(位置);如果条件为,则行内。。因为如果条件为false,则会得到重复的数据。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。以前分配的数据。迈克也说过,你可以看到,在我问题的第一条评论中,我没有读他的评论,我只是检查了他的答案,我发现了错误。所以我只是纠正它:)