Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android E/RecyclerView:未连接适配器;跳过布局(使用片段)_Android - Fatal编程技术网

Android E/RecyclerView:未连接适配器;跳过布局(使用片段)

Android E/RecyclerView:未连接适配器;跳过布局(使用片段),android,Android,我在stackoverflow和这篇博文上阅读了不同的答案,并试图实现他们的解决方案,但我仍然得到错误:没有连接适配器;正在跳过布局。 回收器适配器: package vn.jupviec.frontend.android.monitor.app.ui.candidate; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInfla

我在stackoverflow和这篇博文上阅读了不同的答案,并试图实现他们的解决方案,但我仍然得到错误:
没有连接适配器;正在跳过布局。

回收器适配器:

package vn.jupviec.frontend.android.monitor.app.ui.candidate;

import android.content.Context;
import android.support.v7.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.fasterxml.jackson.databind.ObjectMapper;

import org.w3c.dom.Text;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import butterknife.BindView;
import vn.jupviec.frontend.android.monitor.app.R;
import vn.jupviec.frontend.android.monitor.app.domain.candidate.TrainingDTO;
import vn.jupviec.frontend.android.monitor.app.util.Utils;

/**
 * Created by Windows 10 Gamer on 16/12/2016.
 */


    public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> {
        private static final String TAG = "RecyclerView";
        private List<TrainingDTO> mTrainingDTOs;
        private Context mContext;
        private LayoutInflater mLayoutInflater;
        private String today;
        private static final DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        AdapterInterface buttonListener;
        public RecyclerAdapter(Context context, List<TrainingDTO> datas, AdapterInterface buttonListener) {
            mContext = context;
            mTrainingDTOs = datas;
            this.mLayoutInflater = LayoutInflater.from(mContext);
            this.buttonListener = buttonListener;
        }

        @Override
        public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.candidate_item, parent, false);
           // View itemView = mLayoutInflater.inflate(R.layout.candidate_item, parent, false);
            return new RecyclerViewHolder(itemView);
        }

        @Override
        public void onBindViewHolder(RecyclerViewHolder holder, int position) {
            final ObjectMapper mapper = new ObjectMapper();
            final TrainingDTO trainingDTO = mapper.convertValue(mTrainingDTOs.get(position), TrainingDTO.class);
            holder.tvName.setText(trainingDTO.getMaidName());
            holder.status.setVisibility(View.GONE);
            Date date = new Date();
            String currentDate = sdf.format(date);
            for (TrainingDTO.TrainingDetailDto td : trainingDTO.getListTrain()) {
                today = Utils.formatDate((long) td.getTrainingDate(),"dd/MM/yyyy");
                break;
            }
            if(currentDate.equals(today)) {
                holder.status.setVisibility(View.VISIBLE);
                holder.status.setText("(Mới)");
            }
            holder.btnHistory.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(mContext,R.string.msg_no_candidate_history,Toast.LENGTH_SHORT).show();
                }
            });
            holder.btnTest.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    buttonListener.showComment(trainingDTO);

                }
            });

        }

        @Override
        public int getItemCount() {
            int size ;

            if(mTrainingDTOs != null && !mTrainingDTOs.isEmpty()) {

                size = mTrainingDTOs.size();
            }
            else {

                size = 0;

            }
            return size;

        }

        class RecyclerViewHolder extends RecyclerView.ViewHolder {
            private TextView tvName;
            private Button btnTest;
            private Button btnHistory;
            private TextView status;

            public RecyclerViewHolder(View itemView) {
                super(itemView);
                tvName = (TextView) itemView.findViewById(R.id.txtName);
                btnTest = (Button) itemView.findViewById(R.id.btnTest);
                btnHistory = (Button) itemView.findViewById(R.id.btnHistory);
                status = (TextView)itemView.findViewById(R.id.status);

            }
        }
    public boolean removeItem(int position) {
        if (mTrainingDTOs.size() >= position + 1) {
            mTrainingDTOs.remove(position);
            return true;
        }
        return false;
    }
    public interface AdapterInterface {
        void showComment(TrainingDTO trainingDTO);
        void showHistory(TrainingDTO trainingDTO);
        }


}
包vn.jupviec.frontend.android.monitor.app.ui.candidate;
导入android.content.Context;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.Button;
导入android.widget.ProgressBar;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.fasterxml.jackson.databind.ObjectMapper;
导入org.w3c.dom.Text;
导入java.sql.Timestamp;
导入java.text.DateFormat;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
导入butterknife.BindView;
导入vn.jupviec.frontend.android.monitor.app.R;
导入vn.jupviec.frontend.android.monitor.app.domain.candidate.TrainingDTO;
导入vn.jupviec.frontend.android.monitor.app.util.Utils;
/**
*由Windows 10 Gamer于2016年12月16日创建。
*/
公共类RecyclerAdapter扩展了RecyclerView.Adapter{
私有静态最终字符串TAG=“RecyclerView”;
私有列表MTRAiningDTO;
私有上下文;
私人停车场平面布置;
今天的私人字符串;
私有静态最终日期格式sdf=新的SimpleDataFormat(“dd/MM/yyyy”);
适配器接口按钮列表器;
公共回收器适配器(上下文、列表数据、适配器接口按钮列表器){
mContext=上下文;
mTrainingDTOs=数据;
this.mLayoutInflater=LayoutInflater.from(mContext);
this.buttonListener=buttonListener;
}
@凌驾
public RecycleServiceWholder onCreateViewHolder(视图组父级,int-viewType){
View itemView=LayoutFlater.from(parent.getContext())。充气(R.layout.candidate_item,parent,false);
//View itemView=MLAyoutFlater.充气(R.layout.candidate_项目,父项,false);
返回新的RecycleServiceWholder(itemView);
}
@凌驾
BindViewHolder上的公共无效(RecyclerViewHolder,内部位置){
最终ObjectMapper映射器=新ObjectMapper();
最终TrainingDTO TrainingDTO=映射器.convertValue(mTrainingDTOs.get(位置),TrainingDTO.class);
holder.tvName.setText(trainingDTO.getMaidName());
holder.status.SETVISION(视图已消失);
日期=新日期();
字符串currentDate=sdf.format(日期);
对于(TrainingDTO.TrainingDetailDto-td:TrainingDTO.getListTrain()){
今天=Utils.formatDate((长)td.getTrainingDate(),“dd/MM/yyyy”);
打破
}
如果(当前日期等于(今天)){
holder.status.setVisibility(视图可见);
持有者状态设置文本(“(Mới) ”;
}
holder.btnHistory.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Toast.makeText(mContext,R.string.msg_no_candidate_history,Toast.LENGTH_SHORT).show();
}
});
holder.btnTest.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
按钮Listener.showComment(trainingDTO);
}
});
}
@凌驾
public int getItemCount(){
整数大小;
if(mTrainingDTOs!=null&!mTrainingDTOs.isEmpty()){
size=mTrainingDTOs.size();
}
否则{
尺寸=0;
}
返回大小;
}
类RecyclerViewHolder扩展了RecyclerView.ViewHolder{
私有文本视图tvName;
私人按钮测试;
私人按钮BTN历史;
私有文本视图状态;
公共回收服务文件夹(查看项目视图){
超级(项目视图);
tvName=(TextView)itemView.findViewById(R.id.txtName);
btnTest=(按钮)itemView.findViewById(R.id.btnTest);
btnHistory=(按钮)itemView.findViewById(R.id.btnHistory);
status=(TextView)itemView.findViewById(R.id.status);
}
}
公共布尔removeItem(int位置){
如果(mTrainingDTOs.size()>=位置+1){
mTrainingDTOs.移除(位置);
返回true;
}
返回false;
}
公共接口适配器接口{
无效展示评论(培训至培训至培训);
无效显示历史记录(从培训到培训);
}
}
新的碎片:

package vn.jupviec.frontend.android.monitor.app.ui.candidate;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ClipDrawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RoundRectShape;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;
import vn.jupviec.frontend.android.monitor.app.R;
import vn.jupviec.frontend.android.monitor.app.domain.ResultDTO;
import vn.jupviec.frontend.android.monitor.app.domain.candidate.TrainingDTO;
import vn.jupviec.frontend.android.monitor.app.domain.training.CandidateService;
import vn.jupviec.frontend.android.monitor.app.util.Constants;
import vn.jupviec.frontend.android.monitor.app.util.Utils;

/**
 * Created by Windows 10 Gamer on 09/12/2016.
 */

public class FragmentTapNew extends Fragment implements RecyclerAdapter.AdapterInterface {
    private static final String TAG = FragmentTapNew.class.getSimpleName();
    Activity myContext = null;
    private OnItemSelectedListener listener;
    ShapeDrawable shapeDrawable;
    @BindView(R.id.lvToday)
    RecyclerView lvToday;
    @BindView(R.id.textView)
    TextView textView;
    @BindView(R.id.pb_loading)
    ProgressBar pbLoading;
    private Unbinder unbinder;
    private boolean loading = true;
    int pastVisiblesItems, visibleItemCount, totalItemCount;
    ArrayList<TrainingDTO> mTrainingDTO ;
    RecyclerAdapter mTrainingDTOAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.activity_candidate_training, container, false);
        unbinder = ButterKnife.bind(this, v);
        initViews();

        return v;
    }
    private void initViews() {
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        lvToday.setHasFixedSize(true);
        lvToday.setNestedScrollingEnabled(false);
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                today();
            }
        });
        t.start();
    }

    private boolean isNetworkConnected() {
        ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni == null) {
            Toast.makeText(getActivity(), R.string.err_cannot_establish_connection, Toast.LENGTH_SHORT).show();
            return false;
        } else
            return true;
    }
    private void today() {
        if(isNetworkConnected()){
        String token = "a";
        Integer date = 0;
        setLoadingVisible(true);
        CandidateService.getApiDummyClient(getContext()).getCandidate(
                token,
                date,
                Constants.TRAINING,
                Arrays.asList(Constants.TRAINING_DAY_NEW),

                new Callback<ResultDTO>() {
                    @Override
                    public void success(ResultDTO resultDTO, Response response) {
                        setLoadingVisible(false);
                        mTrainingDTO = (ArrayList<TrainingDTO>) resultDTO.getData();
                        if (mTrainingDTO.size() == 0) {
                            if(textView!=null) {
                                textView.setVisibility(View.VISIBLE);
                                textView.setTextColor(Color.RED);
                                textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);
                            }

                        } else {
                            if(textView!=null) {
                                textView.setVisibility(View.GONE);
                            }
                            if(null==mTrainingDTOAdapter) {
                                mTrainingDTOAdapter = new RecyclerAdapter(getActivity(), mTrainingDTO, FragmentTapNew.this);
                                lvToday.setAdapter(mTrainingDTOAdapter);

                            } else {
                                lvToday.setAdapter(mTrainingDTOAdapter);
                                mTrainingDTOAdapter.notifyDataSetChanged();
                            }
                                lvToday.invalidate();
                        }
                    }

                    @Override
                    public void failure(RetrofitError error) {
                        Log.e(TAG, "JV-ERROR: " + error.getMessage());
                        Log.e(TAG, "JV-ERROR: " + error.getSuccessType());
                    }
                });
    }
    }


    @Override
    public void onResume() {
        setLoadingVisible(false);
        initViews();
        lvToday.setAdapter(mTrainingDTOAdapter);
        super.onResume();
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }
    private void setLoadingVisible(boolean visible) {
        // pbLoading.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY);
        if(pbLoading!=null) {
            pbLoading.setVisibility(visible ? View.VISIBLE : View.GONE);
            lvToday.setVisibility(visible ? View.GONE : View.VISIBLE);
        }
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        if (activity instanceof OnItemSelectedListener) {
            listener = (OnItemSelectedListener) activity;
        } else {
            throw new ClassCastException(activity.toString()
                    + " phải implemenet MyListFragment.OnItemSelectedListener");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        listener = null;
    }

    @Override
    public void showComment(TrainingDTO trainingDTO) {
        Intent intent = new Intent(getContext(), CommentActivity.class);
        intent.putExtra(Constants.ARG_NAME_DETAIL, trainingDTO);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        getContext().startActivity(intent);
    }

    @Override
    public void showHistory(TrainingDTO trainingDTO) {
        Intent intent = new Intent(getContext(), HistoryActivity.class);
        intent.putExtra(Constants.ARG_CANDIDATE_HISTORY_DETAIL, trainingDTO);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        getContext().startActivity(intent);
    }

    public interface OnItemSelectedListener {
        void showComment(TrainingDTO trainingDTO);

        void showHistory(TrainingDTO trainingDTO);

    }

}
包vn.jupviec.frontend.android.monitor.app.ui.candidate;
导入android.app.Activity;
导入android.content.Context;
导入android.content.Intent;
导入android.graphics.Color;
导入android.graphics.drawable.ClipDrawable;
导入android.graphics.drawable.ShapeDrawable;
导入android.graphics.drawable.shapes.RoundRectShape;
导入android.net.ConnectivityManager;
导入android.net.NetworkInfo;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v7.widget.LinearLayoutManager;
导入android.support.v7.widget.RecyclerView;
导入android.util.Log;
导入android.view.Gravity;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.LinearLayout;
导入android.widget.ProgressBar;
导入android.widget.RelativeLayout;
导入android.widget.TextView;
导入android.widget.Toast;
导入java.sql.Timestamp;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入butterknife.BindView;
进口黄油刀
  private void initViews() {
            LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
            layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
            LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(getActivity());
            lvToday.setLayoutManager(mLinearLayoutManager);
            lvToday.setHasFixedSize(true);
            lvToday.setNestedScrollingEnabled(false);
            Thread t = new Thread(new Runnable() {
                @Override
                public void run() {
                    today();
                }
            });
            t.start();
        }
    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
                layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
                lvToday.setHasFixedSize(true);
                lvToday.setNestedScrollingEnabled(false);
    if(mTrainingDTO  == null) {
        mTrainingDTO = new ArrayList<>();
    }
    if(null == mTrainingDTOAdapter ) {
                 mTrainingDTOAdapter = new RecyclerAdapter(getActivity(), mTrainingDTO, FragmentTapNew.this);
}
                lvToday.setAdapter(mTrainingDTOAdapter);

                Thread t = new Thread(new Runnable() {
                    @Override
                    public void run() {
                        today();
                    }
                });
                t.start();