Android 标签设置不一致

Android 标签设置不一致,android,listview,tags,Android,Listview,Tags,我有一个用于所有列表视图的单元格适配器。不同类型的列表由参数TableType确定 TableTypes1和2还使用外部库,该库允许使用滑出功能进行保存和删除。因此,列表视图类中的库OnClickListeners将不适用于TableType1和2 因此,我在cell适配器本身中添加了OnClickListener(标记的“cell”部分的OnClickListener)。单元适配器使用接口to参数调用必要的方法 这里的不一致之处在于TableType1执行正确,没有错误表格类型2不显示,因为标

我有一个用于所有
列表视图的单元格适配器。不同类型的列表由参数
TableType
确定

TableTypes
1和2还使用外部库,该库允许使用滑出功能进行保存和删除。因此,列表视图类中的库
OnClickListeners
将不适用于
TableType
1和2

因此,我在cell适配器本身中添加了
OnClickListener
(标记的“cell”部分的
OnClickListener
)。单元适配器使用接口to参数调用必要的方法

这里的不一致之处在于
TableType
1执行正确,没有错误<但是,代码>表格类型
2不显示,因为标记返回其上方项目的位置

即,如果
TableType
2有4个项目,则项目2将有标签1,项目3将有标签2。我不确定为什么会发生这种情况,因为
TableType
1和2之间的代码是相同的

手机适配器:

package layout;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.media.Image;
import android.nfc.Tag;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.RecyclerView;
import android.widget.ArrayAdapter;
import android.content.Context;
import android.view.View;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import android.preference.PreferenceManager;
import android.widget.ImageView;
import android.widget.TextView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.chauthai.swipereveallayout.SwipeRevealLayout;
import com.tble.brgo.InfoArticle;
import com.tble.brgo.R;
import android.graphics.Typeface;
import android.widget.Filterable;
import android.widget.Filter;

import org.w3c.dom.Text;

/**
 * Created by Praveen on 8/21/16.
 */
public class StandardCellAdapter extends ArrayAdapter<InfoArticle> implements Filterable {
    public ArrayList<InfoArticle> orig;
    public ArrayList<InfoArticle> Teachers;
    public SwipeRevealLayout swipeV;
    public TextView deleteButton;
    public TextView saveButton;
    public int tableType;
    public displayInterface activity;
    public Context ct;
    public StandardCellAdapter(Context context, ArrayList<InfoArticle> titles, int tableType, displayInterface inter) {
        super(context, 0, titles);
        this.Teachers = titles;
        this.tableType = tableType;
        saveButton = new TextView(context);
        deleteButton = new TextView(context);
        activity = inter;
        ct = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // Get the data item for this position
        String title = getItem(position).title;
        String desc = getItem(position).description;
        Holder TagHolder = null;
        TextView Ctitle;
        // Check if an existing view is being reused, otherwise inflate the view
        if (convertView == null) {
            if (tableType == 0) {
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.nclayout, parent, false);
                Ctitle = (TextView) convertView.findViewById(R.id.cellTitle);
            }
            else if(tableType == 1){
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.sclayout, parent, false);
                Ctitle = (TextView) convertView.findViewById(R.id.cellTitle);
                TagHolder = new Holder();
                swipeV = (SwipeRevealLayout)convertView.findViewById(R.id.scSwipe);
                saveButton = (TextView)convertView.findViewById(R.id.saveButton);
                TagHolder.Save = saveButton;
                TagHolder.Cell = Ctitle;
                convertView.setTag(TagHolder);
            }
            else{
                convertView = LayoutInflater.from(getContext()).inflate(R.layout.tclayout, parent, false);
                Ctitle = (TextView) convertView.findViewById(R.id.cellTitle);
                TagHolder = new Holder();
                swipeV = (SwipeRevealLayout)convertView.findViewById(R.id.tcSwipe);
                deleteButton = (TextView) convertView.findViewById(R.id.deleteButton);
                TagHolder.Delete = deleteButton;
                TagHolder.Cell = Ctitle;
                convertView.setTag(TagHolder);
            }
        }
        else {
            TagHolder = (Holder) convertView.getTag();
            Ctitle = (TextView) convertView.findViewById(R.id.cellTitle);
        }
        if(tableType == 1) {
            TagHolder.Save.setTag(position);
            TagHolder.Save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    saveTeacher((int)v.getTag());
                }
            });
            TagHolder.Cell.setTag(position);
            TagHolder.Cell.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    activity.displayWebpage(getItem((int)v.getTag()).description);
                }
            });
        }
        else if(tableType == 2) {
            TagHolder.Delete.setTag(position);
            deleteButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    deleteTeacher((int)v.getTag());
                    if(Teachers.size() == 0)
                        Teachers.add(new InfoArticle("Slide to Save Teachers", "google.com"));
                    notifyDataSetChanged();
                }
            });
            TagHolder.Cell.setTag(position);
            TagHolder.Cell.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    activity.displayWebpage(getItem((int)v.getTag()).description);
                }
            });
        }
        Typeface customFont = Typeface.SERIF;
        Ctitle.setTypeface(customFont);
        Ctitle.setText(title);
        return convertView;
    }
    public Filter getFilter() {
        return new Filter() {

            @Override
            protected FilterResults performFiltering(CharSequence constraint) {
                final FilterResults oReturn = new FilterResults();
                final ArrayList<InfoArticle> results = new ArrayList<InfoArticle>();
                if (orig == null)
                    orig = Teachers;
                if (constraint != null) {
                    if (orig != null && orig.size() > 0) {
                        for (final InfoArticle g : orig) {
                            if (g.title.toLowerCase()
                                    .contains(constraint.toString().toLowerCase())) {
                                results.add(g);
                            }

                        }
                    }
                    oReturn.values = results;
                }
                return oReturn;
            }

            @SuppressWarnings("unchecked")
            @Override
            protected void publishResults(CharSequence constraint,
                                          FilterResults results) {
                Teachers = (ArrayList<InfoArticle>)results.values;
                notifyDataSetChanged();
            }
        };
    }
    @Override
    public void notifyDataSetChanged() {
        super.notifyDataSetChanged();
    }

    public ArrayList<InfoArticle> toIA(ArrayList<String> data){
        ArrayList<InfoArticle> converted = new ArrayList<InfoArticle>();
        for(String a: data)
        {
            converted.add(new InfoArticle(a,""));
        }
        return converted;
    }


    @Override
    public int getCount() {
        return Teachers.size();
    }

    @Override
    public InfoArticle getItem(int position) {
        return Teachers.get(position);
    }

    public void saveTeacher(int position){
        SharedPreferences sharedPref = getContext().getSharedPreferences("MY_PREFERENCES",Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();
        Set<String> teach = sharedPref.getStringSet("teachPref", new HashSet<String>());
        teach.add(Teachers.get(position).title);
        Set<String> link = sharedPref.getStringSet("linkPref", new HashSet<String>());
        link.add(Teachers.get(position).description);
        editor.putStringSet("teachPref", teach);
        editor.putStringSet("linkPref", link);
        editor.apply();
        new AlertDialog.Builder(getContext())
                .setTitle("Teacher Saved")
                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // continue with delete
                    }
                }).setIcon(android.R.drawable.ic_dialog_alert)
                .show();
        swipeV.close(true);
    }
    private void deleteTeacher(int position){
        SharedPreferences sharedPref = getContext().getSharedPreferences("MY_PREFERENCES",Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPref.edit();
        Set<String> teach = sharedPref.getStringSet("teachPref", new HashSet<String>());
        Set<String> link = sharedPref.getStringSet("linkPref", new HashSet<String>());
        teach.remove(Teachers.get(position).title);
        link.remove(Teachers.get(position).description);
        editor.putStringSet("teachPref", teach);
        editor.putStringSet("linkPref", link);
        editor.apply();
        Teachers.remove(position);
        new AlertDialog.Builder(getContext())
                .setTitle("Teacher Deleted")
                .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // continue with delete
                    }
                }).setIcon(android.R.drawable.ic_dialog_alert)
                .show();
        swipeV.close(false);
    }
    class Holder{
        TextView Delete;
        TextView Save;
        TextView Cell;
    }
}
包装布局;
导入android.app.AlertDialog;
导入android.content.DialogInterface;
导入android.content.SharedReferences;
导入android.media.Image;
导入android.nfc.Tag;
导入android.support.v4.app.FragmentTransaction;
导入android.support.v7.widget.RecyclerView;
导入android.widget.ArrayAdapter;
导入android.content.Context;
导入android.view.view;
导入java.util.ArrayList;
导入java.util.HashSet;
导入java.util.Set;
导入android.preference.PreferenceManager;
导入android.widget.ImageView;
导入android.widget.TextView;
导入android.view.LayoutInflater;
导入android.view.ViewGroup;
进口com.chauthai.swipereveallayout.swipereveallayout;
导入com.tble.brgo.InfoArticle;
导入com.tble.brgo.R;
导入android.graphics.Typeface;
导入android.widget.Filterable;
导入android.widget.Filter;
导入org.w3c.dom.Text;
/**
*由Praveen于2016年8月21日创建。
*/
公共类StandardCellAdapter扩展ArrayAdapter实现可过滤{
公共ArrayList orig;
公共艺术教师;
公共SwipeveAllayout swipeV;
公共文本视图删除按钮;
公共文本视图保存按钮;
公共int表类型;
公共界面活动;
公共环境;
公共标准CellAdapter(上下文上下文、ArrayList标题、int tableType、displayInterface inter){
超级(上下文,0,标题);
教师=职称;
this.tableType=tableType;
saveButton=新文本视图(上下文);
deleteButton=新文本视图(上下文);
活动=内部活动;
ct=上下文;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//获取此职位的数据项
字符串title=getItem(position).title;
字符串desc=getItem(位置).description;
Holder TagHolder=null;
文本视图;
//检查是否正在重用现有视图,否则会膨胀视图
if(convertView==null){
如果(tableType==0){
convertView=LayoutInflater.from(getContext()).flate(R.layout.nclayout,parent,false);
Ctitle=(TextView)convertView.findViewById(R.id.cellTitle);
}
else if(tableType==1){
convertView=LayoutInflater.from(getContext()).flate(R.layout.sclayout,parent,false);
Ctitle=(TextView)convertView.findViewById(R.id.cellTitle);
标签持有人=新持有人();
swipeV=(SwipeRevealLayout)convertView.findViewById(R.id.scSwipe);
saveButton=(TextView)convertView.findViewById(R.id.saveButton);
TagHolder.Save=saveButton;
TagHolder.Cell=Ctitle;
convertView.setTag(标记持有者);
}
否则{
convertView=LayoutInflater.from(getContext()).flate(R.layout.tclayout,parent,false);
Ctitle=(TextView)convertView.findViewById(R.id.cellTitle);
标签持有人=新持有人();
swipeV=(SwipeRevealLayout)convertView.findViewById(R.id.tcsweep);
deleteButton=(TextView)convertView.findViewById(R.id.deleteButton);
TagHolder.Delete=删除按钮;
TagHolder.Cell=Ctitle;
convertView.setTag(标记持有者);
}
}
否则{
TagHolder=(Holder)convertView.getTag();
Ctitle=(TextView)convertView.findViewById(R.id.cellTitle);
}
if(tableType==1){
TagHolder.Save.setTag(位置);
TagHolder.Save.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
saveTeacher((int)v.getTag());
}
});
TagHolder.Cell.setTag(位置);
TagHolder.Cell.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
activity.displayWebpage(getItem((int)v.getTag()).description);
}
});
}
else if(tableType==2){
TagHolder.Delete.setTag(位置);
deleteButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
删除教师((int)v.getTag());
如果(Teachers.size()==0)
添加(新的信息文章(“拯救教师的幻灯片”,“谷歌网站”);
notifyDataSetChanged();
}
});
TagHolder.Cell.setTag(位置);
TagHolder.Cell.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){