目標:使用RecyclerView何が起こっている活動RecyclerViewは2回目のクリックまでEditTextを追加しませんか? (?notifyDataSetChanged)
へのEditTextフィールドを追加するには:ボタンがある「追加」するたびに、私は画面に追加するImageViewのとのEditTextで(水平)LinearLayoutsのために希望クリックした彼らは、私まで表示されません。
-1)のEditTextフィールドに入力し、
を[完了]をクリックします-2)をクリックし
を追加-3)私はすでに、その後に入力されたとのEditTextフィールドをクリッククリックは、それが私の考え3.ステップ、ステップ2の後にない追加すべきで再び行われ、またはそれの
オフ]をクリックし、それはnotifyDataSetChangedとは何かを持っているが、私はよく分からないのですか?
研究が行わ:最後の数日間は、テストが行わドキュメント、チュートリアル、ユーチューブの動画、およびstackoverflowの検索
を経由過ごし:notifyDataSetChanged()を呼び出して、私の方法の配置を移動しようとしました。
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.EditText;
import android.widget.LinearLayout;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
private ArrayList<LinearLayout> mDataSet;
private Context mContext;
private Random mRandom = new Random();
public MyAdapter(Context context){
mContext = context;
}
public static class ViewHolder extends RecyclerView.ViewHolder{
public EditText mTextEditName, mTextEditLocation;
public LinearLayout mRelativeLayout; //from the (Main)Activity XML
public ViewHolder(View v){
super(v);
mTextEditName = (EditText) v.findViewById(R.id.nameOfBusinessET);
mRelativeLayout = (LinearLayout) v.findViewById(R.id.rl);
}
}
void updateDataSet(ArrayList<LinearLayout> myArrayList) {
mDataSet = myArrayList;
notifyDataSetChanged();
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
// Create a new View
View v = LayoutInflater.from(mContext).inflate(R.layout.row_layout,parent,false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextEditName.setText("");
}
@Override
public int getItemCount(){
return mDataSet.size();
}
}
RegisterBusinessActivity.java:
public class RegisterBusinessActivity extends Activity {
EditText businessLocationET;
//FIREBASE ITEMS
private static FirebaseUser currentUser;
private static final String TAG = "RealtimeDB";
private FirebaseDatabase database;
private DatabaseReference dbRef;
private EditText businessName;
//RECYCLERVIEW ITEMS
private Context mContext;
LinearLayout mLinearLayout;
private RecyclerView mRecyclerView;
private MyAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
int position;
ArrayList<LinearLayout> linearLayoutList = new ArrayList<LinearLayout>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_businessprofile);
Button addLocationBtn = (Button) findViewById(R.id.addLocationBtn);
businessLocationET = (EditText) findViewById(R.id.businessLocationET);
// Get the widgets reference from XML layout
mLinearLayout = (LinearLayout) findViewById(R.id.rl);
mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mContext = getApplicationContext(); // Get the application context
linearLayoutList.add(mLinearLayout);
// Define a layout for RecyclerView
mLayoutManager = new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false);
mRecyclerView.setLayoutManager(mLayoutManager);
// Initialize a new instance of RecyclerView Adapter instance
mAdapter = new MyAdapter(mContext);
// Set the adapter for RecyclerView
mRecyclerView.setAdapter(mAdapter);
mAdapter.updateDataSet(linearLayoutList);
//FIREBASE FIELDS
businessName = (EditText) findViewById(R.id.nameOfBusinessET);
database = FirebaseDatabase.getInstance();
dbRef = database.getReference("/data");
currentUser =
FirebaseAuth.getInstance().getCurrentUser();
//ADD EXTRA LOCATIONS
addLocationBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
linearLayoutList.add(mLinearLayout);
}
});
DatabaseReference.CompletionListener completionListener =
new DatabaseReference.CompletionListener() {
@Override
public void onComplete(DatabaseError databaseError,
DatabaseReference databaseReference) {
if (databaseError != null) {
notifyUser(databaseError.getMessage());
}
}
};
private void notifyUser(String message) {
Toast.makeText(RegisterBusinessActivity.this, message,
Toast.LENGTH_SHORT).show();
}
}
こんにちはmotis10:
だから、それはそのようになります
1つのオプションは、ちょうどあなたが追加特定の位置を使用することです。私は私のRegisterBusinessActivity.javaにmAdapter.updateDataSet(linearLayoutList)を持っています....あなたはまたonClickにそれを追加すると言っていますか?またはonClickのJUST? –
それを追加しますが、順序は奇数です。最初に「test1」と入力し、「Add」をクリックします。私は2番目の 'test2'を入力し、[追加]をクリックします。 3番目は1と2を上回っているので、 'test3'と入力すると、test3、test1、test2のように上から下に表示されます –