2016-04-30 2 views
0

Я создал представление списка, которое автоматически создало его содержимое из базы данных sql. При щелчке каждый элемент списка открывается на другую страницу в зависимости от того, что было нажато, но область для щелчка на каждом члене списка, по-видимому, распространяется по всей странице, несмотря на то, что каждый участник заполняет только часть страницы, в результате щелчок области перекрываются.Listview Element onItemClickListeners overlapping

В этом примере красный обозначает, где область щелчка должна быть для первого члена списка, а фиолетовый - это где он на самом деле. То же самое происходит со всеми другими членами, причем самый высокий из них, по-видимому, имеет приоритет.

enter image description here

Список членов созданы из

panel_stream.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="0dp" 
    android:elevation="4dp"> 

    <RelativeLayout 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/panel_header_shape" 
    android:elevation="4dp" 
    android:id="@+id/header" 
     android:layout_marginLeft="5dp" 
     android:layout_marginTop="5dp" 
     android:layout_marginRight="5dp"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Update Title Here" 
     android:id="@+id/panelTitle" 
     android:layout_gravity="center_vertical" 
     android:elevation="4dp" 
     android:textColor="#eeeeee" 
     android:layout_alignParentTop="false" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="5dp" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" 
     android:typeface="sans" 
     android:textSize="20dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:text="Unattributed" 
     android:id="@+id/panelAuthor" 
     android:textColor="#dddddd" 
     android:textStyle="italic" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_marginRight="5dp" 
     android:layout_marginLeft="5dp" /> 

</RelativeLayout> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/header" 
    android:background="#ffffff" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:id="@+id/relativeLayout2" 
    android:layout_alignParentBottom="false"> 

    <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
     android:textColor="#111111" 
     android:background="@drawable/panel_shape" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:id="@+id/panelContent" 
     android:layout_margin="5dp" 
     android:text="Content" /> 

</RelativeLayout> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="30dp" 
    android:background="@drawable/panel_footer_shape" 
    android:elevation="4dp" 
    android:layout_below="@+id/relativeLayout2" 
    android:layout_marginRight="5dp" 
    android:layout_marginLeft="5dp" 
    android:layout_alignParentBottom="true"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:text="0" 
     android:id="@+id/commentCount" 
     android:textColor="#000000" 
     android:textStyle="italic" 
     android:maxLines="1" 
     android:layout_toLeftOf="@+id/imageButton" 
     android:layout_toStartOf="@+id/imageButton" 
     android:layout_centerVertical="true" /> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/imageButton" 
     android:background="@mipmap/ic_comment_black_24dp" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_alignParentRight="true" 
     android:contentDescription="comment" />--> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:text="2016-04-20 04:20:00" 
     android:id="@+id/dateStamp" 
     android:textColor="@color/colorAccent" 
     android:textStyle="italic" 
     android:maxLines="1" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_margin="5dp" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:id="@+id/panelID" 
     android:textColor="#00FFFFFF" 
     android:textStyle="italic" 
     android:maxLines="1" /> 

</RelativeLayout> 

и помещаются в ListView внутри> activity_board_stream_view.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
tools:context="com.company.panels.BoardView" 
android:background="@color/background" 
android:id="@+id/mainLayout" 
android:orientation="vertical"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:elevation="4dp" 
    android:background="@color/colorPanel" 
    android:id="@+id/relativeLayout" 
    android:layout_alignParentBottom="false" 
    android:layout_marginTop="1dp" 
    android:layout_below="@+id/titleFrame" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Sorting By" 
     android:id="@+id/textView" 
     android:textSize="18dp" 
     android:textColor="#222222" 
     android:gravity="center_vertical" 
     android:layout_margin="10dp" 
     android:layout_centerVertical="true" /> 

    <Spinner 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/sortBy" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:spinnerMode="dropdown" /> 

</RelativeLayout> 

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:id="@+id/panelHost" 
    android:footerDividersEnabled="true" 
    android:background="@color/background" 
    android:layout_below="@+id/relativeLayout" 
    android:descendantFocusability="blocksDescendants" 
    android:elevation="4dp" 
    android:divider="#00FFFFFF" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="End of Content" 
    android:id="@+id/textView8" 
    android:layout_gravity="center" 
    android:layout_margin="10dp" /> 

Здесь представлен onItemClickListener

BoardView.java:

package com.company.panels; 
//Imports and irrelevant methods excluded 


public class BoardView extends AppCompatActivity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mydb = new DBManager(this); 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.board_stream_menu, menu); 
    setContentView(R.layout.activity_board_stream_view); 

    ListView listView = (ListView)findViewById(R.id.panelHost); 
    listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
           int position, long id) { 
      TextView dateStamp = (TextView)findViewById(R.id.panelID) ; 
      toViewPanel(dateStamp.getText().toString()); 
     }}); 
    return true; 
}} 
+0

Почтовый снимок экрана тоже. –

+0

Я просто добавил один для ясности – Skyler

+0

Пожалуйста, разместите свой 'OnItemClickListener' и метод' getView() 'вашего' адаптера', если вы используете пользовательский. –

ответ

2

Вы должны использовать OnItemClickListener вместо OnClickListener для ListView. (Дополнительная информация: http://developer.android.com/reference/android/widget/AdapterView.OnItemClickListener.html)

+0

Я использую onItemClickListener, я просто забыл уточнить, что – Skyler

+0

Не могли бы вы также опубликовать код onItemClickListener? –

+0

Я просто добавил его в – Skyler