2017-12-07 24 views
0

이제 그리드보기에서 이미지를 표시하고 있습니다. 정상적으로 작동합니다. 그 그리드보기에서 몇 가지 이미지를 선택하려고 해요, 배열 변수 (예 : 위치를 선택하면 여러 이미지 위치를 원하는 위치 1, 4, 10. 내가 그 특정 위치 ID를 원한다면 나는 그것을 배열을 저장하고 싶습니다 1,4,10,15 등). 아래에 활동 및 어댑터 코드를 입력하겠습니다. 미리 감사드립니다.gridview 여러 위치를 가져 와서 배열 변수에 저장하는 방법

활동

public class EM_event_total_userSeats extends AppCompatActivity implements RestCallback,AdapterView.OnItemClickListener { 

String user_id,first_name,last_name,name,emailid,contact_no,gender1,date_of_birth,country_id,postal_code,rolename,profession_response,Street_Address,City,photo; 
GridView GridUserSeats; 
; 
TextView textView1,textView2,Tvposition; 

ImageView Ivseats; 

public static EM_event_total_userseatsAdapter adapter; 
ArrayList<EM_event_total_UserSeatsModel> EMeventuserseatslist; 
View savedView; 
View previous = null; 
String event_id = "EVEPRI62"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.em_event_total_user_seats); 
    initviews(); 
    callSeatsApi(); 

    GridUserSeats.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, 
           int position, long id) { 

      String a = String.valueOf(position); 

      Toast.makeText(EM_event_total_userSeats.this, a + "#Selected", Toast.LENGTH_SHORT).show(); 
      v.setBackgroundColor(Color.GREEN); 
      adapter.notifyDataSetChanged(); 
     } 
    }); 

} 

private void initviews() { 

    GridUserSeats=(GridView)findViewById(R.id.GridUserSeats); 
    GridUserSeats.setOnItemClickListener(this); 



    textView1=(TextView) findViewById(R.id.textView1); 

    // textView2=(TextView) findViewById(R.id.textView2); 

    Intent intent = getIntent(); 

    first_name = intent.getStringExtra("first_name"); 
    last_name = intent.getStringExtra("last_name"); 

} 

private void callSeatsApi() { 

    HashMap<String, String> map = new HashMap<String, String>(); 
    map.put("events", event_id); 
    RestService.getInstance(EM_event_total_userSeats.this).getUserSeats(map, new MyCallback<ArrayList<EM_event_total_UserSeatsModel>>(EM_event_total_userSeats.this, 
      EM_event_total_userSeats.this, true, "Finding seats....", GlobalVariables.SERVICE_MODE.EM_SEATS)); 
} 

@Override 
public void onFailure(Call call, Throwable t, GlobalVariables.SERVICE_MODE mode) { 

} 

@Override 
public void onSuccess(Response response, GlobalVariables.SERVICE_MODE mode) 
{ 
    switch (mode) 
    { 
     case EM_SEATS: 
      EMeventuserseatslist = (ArrayList<EM_event_total_UserSeatsModel>)response.body(); 
      adapter = new EM_event_total_userseatsAdapter(EMeventuserseatslist, getApplicationContext()); 
      GridUserSeats.setAdapter(adapter); 
      break; 
    } 

} 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 


} 

} 

어댑터

import android.content.Context; 
    import android.content.Intent; 
    import android.support.annotation.NonNull; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.ArrayAdapter; 
    import android.widget.ImageView; 
    import android.widget.TextView; 
    import android.widget.Toast; 
    import com.squareup.picasso.Picasso; 
    import java.util.ArrayList; 
    import java.util.List; 
    import cfirst.live.com.R; 
    import cfirst.live.com.model.BasketModel; 
    import cfirst.live.com.model.EM_event_total_UserSeatsModel; 


public class EM_event_total_userseatsAdapter extends ArrayAdapter<EM_event_total_UserSeatsModel> implements View.OnClickListener { 
ArrayList<EM_event_total_UserSeatsModel> dataSet; 
public ArrayList<EM_event_total_UserSeatsModel> EMeventuserseatslist = new ArrayList<EM_event_total_UserSeatsModel>(); 
Context mContext; 
ViewHolder holder; 
String user_seats; 
private int[] tagCollection; 
private String[] mobileValues; 
private String[] mobileValuesD; 

private static class ViewHolder { 
    TextView TvEmUserSeats; 
    ImageView IvUsreSeats,available,selctedimag; 

} 
private String[] strings; 
List<Integer> selectedPositions = new ArrayList<>(); 


public EM_event_total_userseatsAdapter(ArrayList<EM_event_total_UserSeatsModel> data, Context context) { 
    super(context, R.layout.list_em_get_seats, data); 
    this.dataSet = data; 
    this.mContext=context; 

} 
public int getTagFromPosition(int position) { 
    return tagCollection[position]; 
} 

@Override 
public void onClick(View v) { 
    int position=(Integer) v.getTag(); 
    Object object= getItem(tagCollection[position]); 

    EM_event_total_UserSeatsModel dataModel=(EM_event_total_UserSeatsModel) object; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
    // Get the data item for this position 
    EM_event_total_UserSeatsModel dataModel = getItem(position); 
    // Check if an existing view is being reused, otherwise inflate the view 
    ViewHolder viewHolder; // view lookup cache stored in tag 

    final View result; 


    if (convertView == null) { 

     viewHolder = new ViewHolder(); 
     LayoutInflater inflater = LayoutInflater.from(getContext()); 
     convertView = inflater.inflate(R.layout.list_em_get_seats, parent, false); 


     viewHolder.TvEmUserSeats = (TextView) convertView.findViewById(R.id.TvEmUserSeats); 
     viewHolder.IvUsreSeats = (ImageView) convertView.findViewById(R.id.IvUsreSeats); 


     result=convertView; 

     convertView.setTag(viewHolder); 
     } else { 
     viewHolder = (ViewHolder) convertView.getTag(); 
     result=convertView; 
     } 



    String blue_available = "seat3.png"; 
    String red_booked = "seat1.png"; 

    String get_seat = dataModel.getBookedStatus(); 
    viewHolder.TvEmUserSeats.setText(dataModel.getSeatName()); 
    if(Integer.parseInt(get_seat) == 1){ 
     Picasso.with(mContext).load("imageurl + red_booked).into(viewHolder.IvUsreSeats); 

    }else 
    { 

     Picasso.with(mContext).load("imageurl + blue_available).into(viewHolder.IvUsreSeats); 

    }  
    return convertView; 
} 
} 
+0

시간이 Recyclerview –

+0

에 이동왔다 목록에서 선택한 위치를 추가 할 수 있습니다. –

+0

네, 그냥 Recyclerview가 더 강력하다고 말할 수 있습니다 ... 당신의 그리드 아이템에 체크 박스 나 다른 것들이있어서 그들을 선택하기 위해서입니까? –

답변

0

그것은 간단합니다. 이 목적으로 SparseBooleanArray를 사용할 수 있습니다. 어댑터에 다음 방법을 추가하기 만하면됩니다.

public void toggleSelection(int item) { 
    if (selectedItems.get(item, false)) { 
     selectedItems.delete(item); 
    } else { 
     selectedItems.put(item, true); 
    } 

    notifyDataSetChanged(); 
} 

public void setSelectedItems(List<Object> objects) { 
    if (objects != null) { 
     for (Object object : objects) { 
      toggleSelection(object.getId()); 
     } 

     notifyDataSetChanged(); 
    } 
} 

public void clearSelections() { 
    selectedItems.clear(); 
    notifyDataSetChanged(); 
} 

public int getSelectedItemCount() { 
    return selectedItems.size(); 
} 

public List<Integer> getSelectedItems() { 
    List<Integer> items = 
      new ArrayList<Integer>(selectedItems.size()); 
    for (int i = 0; i < selectedItems.size(); i++) { 
     items.add(selectedItems.keyAt(i)); 
    } 
    return items; 
} 

선택한 항목의 상태를 저장하는 데 세트 선택 방법을 사용하십시오. 생성자에서 SparseBooleanArray를 초기화하는 것을 잊지 마십시오. 그 후

SparseBooleanArray SparseBooleanArray = new SparseBooleanArray(); 

, 다음 선택을 수행 한 후, 항목의 선택 상태를 변경 어레이 내의 선택된 아이템을 얻을 getSelectedItem() 전화 toggleSelection(position);를 사용한다.

+0

내 코드에서 편집하십시오. –

+0

먼저 쉼표로 분리 된 문자열로 선택한 항목 위치를 원하십니까? –

+0

예. 예 : exparry = 1,5,7, –

0

// 이미 나는이 작업을 수행하려면 더 많은 시간을 보내고, 그리드보기에서 방법이 ArrayList에를 만들고

List <int> selectedArray = new ArrayList<>(); 

    @Override 
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 



int click = (int) parent.getItemAtPosition(position); 

selectedArray.add(click); 
} 
+0

과 어떻게 분리되어 있는지 더 잘 이해할 수 있도록 답을 설명 할 수 있습니다. –

+0

grid-view를 사용하여 100 석을 표시하고 있습니다. 이제 100 석의 무작위 석, 2,6,10,15 개의 무작위 석을 선택하고 싶습니다.이 위치를 나머지 전체 API 변수에 전달해야합니다. 그래서 나는 하나의 변수에 2,5,10,15와 같은 임의의 좌석이 필요하다. –

+0

다른 위치에 선택된 위치를 저장하고 배열을 나머지 전체에 전달합니다 –