когда я щелкаю по тексту recylerview, чтобы перейти к другому действию, то это действие не открывается и выдает ошибку привязки - PullRequest
0 голосов
/ 11 июня 2019

не запустил активность и выдает ошибку привязки данных

useradapter

public class useradapter extends RecyclerView.Adapter<useradapter.CustomView> {

String nn = "m";

List<allusermodel> list1;
private Context context;
private LayoutInflater layoutInflater;


public useradapter(Context context, List<allusermodel> list1) {
    Log.e("reached1", nn);
    this.context = context;
    this.list1 = list1;

}


@Override
public useradapter.CustomView onCreateViewHolder(final ViewGroup parent, final int viewType) {

    Log.e("reached2", nn);
    if (layoutInflater == null) {
        layoutInflater = LayoutInflater.from(parent.getContext());
    }

    final Entrys newsBinding = Entrys.inflate(layoutInflater, parent, false);


    //  View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.innerlayout,parent,false);
    return new CustomView(newsBinding);
}

@Override
public void onBindViewHolder(useradapter.CustomView holder,int position) {
    Log.e("reached3", nn);

    //  News news = newsList.get(position);

    // holder.desc.setText(news.getDesc());

     allusermodel newsModel1 = list1.get(position);
   // Log.e("list", String.valueOf(list1));
    Log.e("nameeeee",newsModel1.getAll_user());
   // Log.e("position", String.valueOf(position));

    //Log.e("names",newsModel1.getAll_user());
    holder.bind(newsModel1);


}

@Override
public int getItemCount() {
    return list1.size();

}

public class CustomView extends RecyclerView.ViewHolder {

    private Entrys newsBinding;
   // public TextView title;

     //TextView title, desc;
    public CustomView(Entrys newsBinding) {
        super(newsBinding.getRoot());

        this.newsBinding = newsBinding;
        Log.e("reached4", nn);
       // title = (TextView)itemView.findViewById(R.id.titleval);
        //desc =(TextView)itemView.findViewById(R.id.descval);
        newsBinding.setRecyclerclick(new Presenters2() {
            @Override
            public void onclickListener() {

                int pos = getAdapterPosition();
                if (pos != RecyclerView.NO_POSITION) {
                    allusermodel clickedDataItem = list1.get(pos);

                    Intent intent = new Intent(context, messagelist.class);
                    intent.putExtra("clickid", clickedDataItem.getId());

                    context.startActivity(intent);
                }

            }
        });
    }

    public void bind(allusermodel newsModel1)

    {
        Log.e("reached5", String.valueOf(newsModel1));
        //String j = newsModel1.getAll_user();
        // Log.e("bind",nn);
        this.newsBinding.setAlluserentry(newsModel1);
    }


    public Entrys getNewsBinding() {
        Log.e("reached6", nn);
        return newsBinding;
    }

}
}

messagelist

public class messagelist extends AppCompatActivity {

private RecyclerView recyclerView;
private ActivityMainBinding activityMainBinding1;
private Postmessagemodel postmessagemodel;
private messageadapter customAdapter;
private messagelist_datamanager dataManger;
private postmessage_datamanager postmessage_datamanager;
private List<messagemodel> newsList;

String tokens;
String sendmsg;

private int toid;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_messagelist);

    toid=getIntent().getExtras().getInt("clickid");

    SharedPreferences pref = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);

    tokens = pref.getString("sherdtoken", "");
    Log.e("token", tokens);

    activityMainBinding1 = DataBindingUtil.setContentView(this,R.layout.activity_messagelist);

    postmessagemodel = new Postmessagemodel();
    postmessage_datamanager = new postmessage_datamanager(this);

    //activityMainBinding1.setPostmsg(postmessagemodel);
   /* activityMainBinding1.setPostbtn(new Post() {
        @Override
        public void onclick() {
            postmessage();
        }
    });*/

    sendmsg = postmessagemodel.getMSG();
    dataManger = new messagelist_datamanager(this);

    recyclerView = (RecyclerView) findViewById(R.id.recycle1);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    newsList = new ArrayList<>();

    customAdapter = new messageadapter(this, newsList);
    recyclerView.setAdapter(customAdapter);

    getmessage();
    postmessage();

}



public void getmessage()
{
    dataManger.sendVolleyRequest2(tokens,toid,messagelist.this, new messagelist_datavalue() {

        @Override
        public void setJsonDataResponse(JSONArray response) {

            messagemodel userModel = new messagemodel();
            newsList = new ArrayList<>();


            try {




                for (int i = 0; i < response.length(); i++) {

                    JSONObject jsonObject = response.getJSONObject(i);
                    // Log.e("final", String.valueOf(i));
                    userModel.setFromUserId(jsonObject.getInt("fromUserId"));
                    userModel.setMessage(jsonObject.getString("message"));
                    userModel.setToUserId(jsonObject.getInt("toUserId"));

                    newsList.add(userModel);
                }


            } catch (JSONException jsonDataResponse) {
                Log.e("error", String.valueOf(jsonDataResponse));

            }

            customAdapter.notifyDataSetChanged();


        }

        @Override
        public void setVolleyError(VolleyError volleyError) {
            Log.e("Volley", volleyError.toString());
        }
    });


}


private void postmessage() {

    postmessage_datamanager.sendVolleyRequest3(sendmsg,toid,tokens,messagelist.this,new postmessage_datavalue() {
        @Override
        public void setJsonDataResponse(JSONObject response) {
            try {

                Log.e("success",sendmsg);


            } catch (Exception e) {
                Log.e("error", e.toString());
            }


        }

        @Override
        public void setVolleyError(VolleyError volleyError) {

        }
    });


}

}

messagelist.xml

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout">


<data>

    <variable
        name="postmsg"

type="com.example.mayurpancholi.chat_mvvm.viewmodel.Postmessagemodel"/>

    <variable
        name="postbtn"
        type="com.example.mayurpancholi.chat_mvvm.interfaces.Post"/>

</data>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mayurpancholi.chat_mvvm.messagelist">


<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recycle1"
    android:scrollbars="vertical"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginBottom="80dp">

</android.support.v7.widget.RecyclerView>

<EditText
    android:id="@+id/post_text"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="13dp"
    android:text="@={postmsg.MSG}"
    android:layout_marginLeft="9dp"
    android:ems="10"
    android:inputType="textPersonName" />

<Button
    android:id="@+id/post_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/post_text"
    android:layout_alignParentEnd="true"
    android:layout_marginBottom="7dp"
    android:layout_marginRight="5dp"
    android:background="@color/colorPrimary"
    android:onClick="@{()->postbtn.onclick()}"
    android:text="post" />

</RelativeLayout>
</layout>

innerlayout.xml

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:android="http://schemas.android.com/apk/res/android">

<data class ="MessageBinding">
<variable
    name="message_list"
    type="com.example.mayurpancholi.chat_mvvm.viewmodel.messagemodel"/>
</data>


<LinearLayout
 android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp">

<TextView
    android:id="@+id/main_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="30dp"
    android:layout_marginTop="10dp"
    android:text="@{message_list.message}"
    android:textSize="17dp" />
</LinearLayout>
</layout>

messagelistadapter

public class messageadapter extends RecyclerView.Adapter<messageadapter.CustomView1> {


List<messagemodel> list;
private Context context;
private LayoutInflater layoutInflater;


public messageadapter(Context context,List<messagemodel> list)
{
    this.context =context;
    this.list = list;
}

public messageadapter() {

}

@Override
public messageadapter.CustomView1 onCreateViewHolder(ViewGroup parent, int viewType) {
    if(layoutInflater == null)
    {
        layoutInflater = LayoutInflater.from(parent.getContext());
    }

    final MessageBinding newsBinding  = MessageBinding.inflate(layoutInflater,parent,false);


    //  View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.innerlayout,parent,false);
    return new CustomView1(newsBinding);
}

@Override
public void onBindViewHolder(messageadapter.CustomView1 holder, int position) {
    messagemodel newsModel = list.get(position);
    holder.bind(newsModel);
}

@Override
public int getItemCount() {
    return list.size();
}

public class CustomView1 extends RecyclerView.ViewHolder {
    private MessageBinding newsBinding;
    // TextView title, desc;
    public CustomView1(MessageBinding newsBinding) {
        super(newsBinding.getRoot());

        this.newsBinding = newsBinding;
        //title = (TextView)itemView.findViewById(R.id.titleval);
        //desc =(TextView)itemView.findViewById(R.id.descval);

    }

    public void bind(messagemodel newsModel1)
    {
        //  this.newsBinding.setMessage_list(newsModel1);
    }

    public MessageBinding getNewsBinding()
    {
        return newsBinding;
    }
}



}

когда я щелкаю по тексту переработчика, он открывает список сообщений, но список сообщений не открывается и выдает ошибку

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.mayurpancholi.chat_mvvm, PID: 21181
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mayurpancholi.chat_mvvm/com.example.mayurpancholi.chat_mvvm.messagelist}: java.lang.ClassCastException: com.example.mayurpancholi.chat_mvvm.databinding.ActivityMessagelistBinding cannot be cast to com.example.mayurpancholi.chat_mvvm.databinding.ActivityMainBinding
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)

1 Ответ

0 голосов
/ 11 июня 2019

Я думаю, что ошибка очевидна.Что касается вашего потока, я вижу, что вы хотите связать макет активности списка сообщений с привязкой данных класса MainActity, для которого вы можете иметь макет как «activity_main.xml».Ибо, поскольку имя макета привязки вашей активности в списке сообщений - "activity_messagelist.xml", то сгенерированное имя класса привязки будет "ActivityMessagelistBinding".Следовательно, согласно логике привязки данных макет будет связываться с ActivityMessagelistBinding вместо ActivityMainBinding.Таким образом, в качестве заключения вы меняете утверждение

    private ActivityMainBinding activityMainBinding1;
activityMainBinding1 = DataBindingUtil.setContentView(this,R.layout.activity_messagelist);

на

    private ActivityMessagelistBinding activityMessagelistBinding;
activityMessagelistBinding = DataBindingUtil.setContentView(this,R.layout.activity_messagelist);

Надеюсь, оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...