2017-02-20 3 views
0

프로그래밍 방식으로 내 listview에서 선택한 행의 배경색을 가져와야합니다.listview에서 선택된 행의 배경색 가져 오기

View v;  
v.setBackgroundColor(context.getResources().getColor(R.color.childArticle)); 

을하지만 난 이런 식으로 뭔가 할 필요가 있기 때문에 행의 색상을 얻을 방법을 알아낼 수 없습니다 : 나는 행을 착색이 쓴

colorOfSelectedRow = v.getBackgroundColor(); 
if(colorOfSelectedRow == MY_COLOR) { 
    // Do something 
} 

가 감사를!

편집 : 누를 수있는 행의 색상을 알고 싶지만 모든 행이 같은 색상으로 채색되어있는 것은 아닙니다.

+0

는, 당신은 색상을 모르는 당신을 해달라고? –

+3

나는 당신의 답변이 이미 답변을 생각합니다 [여기] (http://stackoverflow.com/questions/14779259/get-background-color-of-a-layout) –

+0

아니오! 모든 행에 색깔이있는 것은 아닙니다! –

답변

1

아래처럼 태그 내에서 배경색 ID를 설정하고 또한 태그에

첫 세트 컬러 코드 ID color.xml에서 언급 한 컬러의 ID를 가져올 수 있습니다.

view.setTag(R.color.childArticle); 

그런 다음보기에서 배경 색상 get 및 태그를 얻고 그 값을 구문 분석하고 color.xml 파일에서 컬러 코드를 얻을하려는 경우.

int ColorId = Integer.parseInt(view.getTag().toString()); 
+0

어떻게 색을 얻을 수 있습니까 ?? 나는 그것을 눌렀을 때 listview에서 선택된 행의 색을 찾아야한다. 나는 이것을 시도했다 :'ColorDrawable viewBackground = (ColorDrawable) listViewOrder.getBackground(); int colorId = viewBackground.getColor();'그러나 나에게 ** - 1 ** .. –

+0

당신은 태그에도 색상을 설정해야합니다. 따라서 태그는 색상 코드 ID를 보유하고 있으므로 색상 코드에서 색상에 액세스 할 수 있습니다. –

+0

코드는 항상 같은 색상을 주지만 배경색이없고 빨간색 배경색이있는 행이 있습니다. 내가 선택한 행이 빨간색인지 아닌지 알고 싶습니다. 귀하의 코드를 가지고 항상 같은 결과가 있습니다 –

0

이 코드는 컬러 배경이 설정되지 않은 경우 클릭 한 행의 색 문자열 또는 아무 것도 출력하지 않습니다. 그러나 배경색을 정확히 설정하는 방법을 지정하지 않았습니다.

ListView listView = (ListView) findViewById(R.id.listView); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); 
adapter.add("Blue"); 
adapter.add("None"); 
adapter.add("Red"); 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    int color; 

    Drawable background = view.getBackground(); 
    if (background instanceof ColorDrawable) { 
     color = ((ColorDrawable) background).getColor(); 
     Log.d("MainActivity", Integer.toHexString(color)); 
    } 
    } 
}); 
listView.setAdapter(adapter); 
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    listView.getChildAt(0).setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_blue_dark)); 
    listView.getChildAt(2).setBackgroundColor(ContextCompat.getColor(MainActivity.this, android.R.color.holo_red_dark)); 
    } 
}); 
+0

EDIT : 항상 "ffffffff"를 반환합니다. 선택한 행에 맞습니까? –

+0

업데이트 된 답변을 확인할 수 있습니까? 클릭 된 행에 대한 것이지만 선택한 행으로 변경할 수 있습니다. 언제 당신은 색깔을 얻고 싶니? 클릭하면 몇 개의 행이 선택되는 단계가 있습니까? – Agraphie

+0

나는 실제로 ListView 리스너의 outsite입니다. 버튼을 클릭하는 것으로 상상해보십시오. 그러면 목록보기에서 선택한 행의 색상이 표시됩니다. 나는 setOnItemClickListener 외부에서 listview의 현재 선택한 행 색상을 얻는 방법을 모르겠다! –

0
final int MY_COLOR = R.color.childArticle; 
View v;  
v.setBackgroundColor(context.getResources() 
.getColor(R.color.childArticle)); 
view.setTag(R.color.childArticle); 
Integer colorOfSelectedRow = (Integer) v.getTag(); 
if(colorOfSelectedRow == MY_COLOR) { 
// Do something 
} 

사용이 .. 같은 색으로 모든 항목을 설정하면

관련 문제