액티비티에 listview를 넣고 데이터를 불러오는데..
리스트뷰의 아이템을 클릭하면 프래그먼트가 뜨도록 했습니다.
근데 프래그먼트가 투명해서 그런지 액티비티와 겹쳐 보이네요.
검색해 보니 배경색을 주면 된다고 해서 흰색을 줬는데...
액티비티가 완전히 안보이는건 아니고 약간 흐리게 보이고요..
문제는 액티비티의 버튼이 클릭됩니다.
원래 이게 정상인건가요?
프래그먼트가 띄워졌을땐 액티비티가 클릭 안되게 하는 방법이 따로 있나요?
추가 질문인데요...
제가 계획한건 단어장 리스트가 보이고 개별 단어장을 누르면 영어 단어 리스트가 보이게 하려고 합니다.
이때 영어 단어 리스트를 프래그먼트에 보이도록 할려고 했는데 이걸 보통 웹페이지의 팝업창처럼 그냥 액티비티에 보이게 하는건가요? 책을 보고 하려니 이런 구성은 어떻게 하는지 잘 모르겠네요.
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import cz.msebera.android.httpclient.Header;
public class MainActivity extends AppCompatActivity implements FragmentWordsList.OnFragmentInteractionListener{
@Override
public void onFragmentInteraction(Uri uri) {
}
public static final String TAG = "MainActivity";
ListView listView;
WordsInfoAdapter wiAdapter;
Handler handler = new Handler();
ArrayList<WordsInfoItem> itemList;
Button button;
//fragment
FragmentWordsList fragmentWordsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
wiAdapter = new WordsInfoAdapter();
listView.setAdapter(wiAdapter);
curPage = 1;
getWordsInfo(curPage);
//아이템 클릭
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
WordsInfoItem curItem = (WordsInfoItem) wiAdapter.getItem(position);
int uid = curItem.getUid();
String vname = curItem.getVname();
Log.d(TAG, "#" + position + ". uid : " + uid + ", vname : " + vname);
//프래그먼트를 띄우고 특정값 전달??
fragmentWordsList = new FragmentWordsList();
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragmentWordsList).commit();
}
});
}
//어댑터 설정
class WordsInfoAdapter extends BaseAdapter {
ArrayList<WordsInfoItem> itemList = new ArrayList<WordsInfoItem>();
public void setItemList(ArrayList<WordsInfoItem> itemList) {
this.itemList = itemList;
}
@Override
public int getCount() {
return itemList.size();
}
@Override
public Object getItem(int position) {
return itemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
WordsInfoView view = null;
if(convertView == null) {
view = new WordsInfoView(getApplicationContext());
} else {
view = (WordsInfoView) convertView;
}
view.setWordsInfoItem(itemList.get(position));
return view;
}
}
//데이터 가져오기
private void getWordsInfo(int page) {
mLockListView = true;
curPage = page;
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("page",page);
client.post("서버주소", params, new JsonHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
Log.d(TAG, "onFailure : ");
}
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
Log.d(TAG, "onSuccess : ");
try{
Log.d(TAG, response.getString("res") + ", " + response.getInt("total_page"));
if(response.getString("res").equals("ok")) {
totalPage = response.getInt("total_page");
if(itemList == null) {
itemList = new ArrayList<WordsInfoItem>();
}
JSONArray jsonArray = new JSONArray(response.getString("list"));
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj = new JSONObject(jsonArray.getString(i));
itemList.add(new WordsInfoItem(obj.getInt("uid"), obj.getString("grade_type"), obj.getString("pub_name"), obj.getString("vname"), obj.getString("wdate"), obj.getString("who")));
}
wiAdapter.setItemList(itemList);
wiAdapter.notifyDataSetChanged();
mLockListView = false;
} else {
Log.d(TAG, "데이터 가져오기 실패");
}
}catch(Exception e) {
e.printStackTrace();
}
}
});
}
}