2016-02-19 56 views
0

我有一个片段,它使用Volley从我的服务器获取学生词汇单词列表。单词列表显示在顶部带有FAB的RecyclerView中。我怎样才能连接我的FAB,这样当它被按下时,CardView将显示为像在RecylerView上弹出一样。这样做的目的是使用该CardView作为与另一个脚本进行通信的表单,以允许用户输入一个单词以添加到列表中。当点击CardView上的按钮时,它应该运行POST脚本并消失。这是可行的在一个单一的片段?如何在FAB被触摸时呈现CardView

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.words_ui, container, false); 
    ButterKnife.bind(this, view); 
    wordRecyclerView = (RecyclerView) view.findViewById(R.id.wordsRecyclerView); 
    wordRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    wordRecyclerView.addItemDecoration(new VerticalSpaceItemDecoration(VERTICAL_ITEM_SPACE)); 
    mWordAdapter = new WordAdapter(getActivity()); 
    wordRecyclerView.setAdapter(mWordAdapter); 
    TextView clientTextView = (TextView) view.findViewById(R.id.clientText); 
    Bundle args = getActivity().getIntent().getExtras(); 
    final String username = args.getString("USER_NAME"); 
    clientTextView.setText("Word List For: " + username); 

    FloatingActionButton wordButton = (FloatingActionButton) view.findViewById(R.id.wordFloatingButton); 
    wordButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getActivity(), "Button was clicked", Toast.LENGTH_LONG).show(); 
     } 
    }); 
    sendRequest(); 
    return view; 
    } 


private void sendRequest() { 

    Bundle args = getActivity().getIntent().getExtras(); 
    final String username = args.getString("USER_NAME"); 
    final String URL = JSON_URL + username; 
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, URL, null, new Response.Listener<JSONObject>() { 


     @Override 
     public void onResponse(JSONObject response) { 
      mWordArrayList = parseJSONResponse(response); 
      mWordAdapter.setWordArrayList(mWordArrayList); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

     } 
    }); 

    RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
    requestQueue.add(request); 
} 


public ArrayList<Word> parseJSONResponse(JSONObject response) { 
    ArrayList<Word> mWordArrayList = new ArrayList<Word>(); 
    if (response == null || response.length() == 0) { 

    } 
    try { 
     JSONArray jsonArray = response.getJSONArray(JSON_ARRAY); 
     for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject usersWords = jsonArray.getJSONObject(i); 
      String words = usersWords.getString(KEY_WORD); 
      String addbys = usersWords.getString(KEY_ADDBY); 
      Word word = new Word(words, addbys); 
      word.setWord(words); 
      word.setAddby("Added by: " + addbys); 
      mWordArrayList.add(word); 
     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return mWordArrayList; 
} 

回答

0

我想我可能找到了一个临时解决方案。我想知道是否有人可以实施上述或告诉我一个更好的方法来做到这一点。

我最终做的只是创建一个新的Activity AddWord.class并从onClickListener调用它。然后,我创建一个视图和一个自定义的主题是这样的...

<style name="AppTheme.CustomTheme"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowCloseOnTouchOutside">true</item> 
</style> 

当FAB单击视图上仍是可见背后的RecyclerView的顶部弹出。用户可以完成表单并将该单词添加到列表中,然后返回RecyclerView。

不知道这是多么昂贵,所以如果任何人有更好的选择让我知道!

相关问题