当列表中没有实际项目时,有没有办法在代码中获取ListViewItem高度?
我的ListViewItem布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight">
...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我试图使用Inflater来获取它:
View convertView = LayoutInflater.from( this )
.inflate( R.layout.mail_list_row, null );
int itemHeight = convertView.getHeight();
Run Code Online (Sandbox Code Playgroud)
但它返回0;
谢谢!
我有一个列表视图,通过数据库中的记录填充.现在我必须让一些记录可见,但无法选择,我该如何实现呢?
这是我的代码
public class SomeClass extends ListActivity {
private static List<String> products;
private DataHelper dh;
public void onCreate(Bundle savedInstanceState) {
dh = new DataHelper(this);
products = dh.GetMyProducts(); /* Returns a List<String>*/
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, R.layout.myproducts, products));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener( new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), ((TextView) arg1).getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
布局文件myproducts.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="16sp"> …Run Code Online (Sandbox Code Playgroud) 我的ListView看起来像:http: //oi36.tinypic.com/ek5n3o.jpg
我的listview xaml:
<ListView Name="notListView" Width="550" HorizontalAlignment="Left">
<ListView.View>
<GridView AllowsColumnReorder="true">
<GridViewColumn Header="Ders Kodu" Width="100" DisplayMemberBinding="{Binding Path=DersKodu}" />
<GridViewColumn Header="Ders Ad?" Width="200" DisplayMemberBinding="{Binding Path=DersAdi}" />
<GridViewColumn Header="Vize" Width="50" DisplayMemberBinding="{Binding Path=Vize}" />
<GridViewColumn Header="Final" Width="50" DisplayMemberBinding="{Binding Path=Final}" />
<GridViewColumn Header="Ortalama" Width="60" DisplayMemberBinding="{Binding Path=Ortalama}" />
<GridViewColumn Header="Harf Notu" Width="60" DisplayMemberBinding="{Binding Path=Harf}" />
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我的.cs代码:
notListView.ItemsSource = notGoruntule(1, 1); // notGoruntule() function returns an Arraylist, which contains my "Notlar" objects.
Run Code Online (Sandbox Code Playgroud)
我试过这个:
ListViewItem lvitem = (ListViewItem)notListView.Items[0];
lvitem.Background = Brushes.Red;
Run Code Online (Sandbox Code Playgroud)
但第一线抛出: …
一个活动有一个Button和一个ListView.最初,只有Button可见.按下按钮时,将显示ListView.显示时,我是否可以将一个特定项目显示为选中/聚焦?
用例可以是假设它是语言设置列表,当列表打开时,当前选择的语言必须显示为突出显示.
如果我知道该项目的索引,如何将其设置为专注于显示?
我怎么能投ListView.Items的List<string>?
这是我试过的:
List<string> list = lvFiles.Items.Cast<string>().ToList();
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
无法将类型为"System.Windows.Forms.ListViewItem"的对象强制转换为"System.String".
在ListView中,您可以在每个项目上添加图标.
在详细信息模式下查看时,图标显示在最左侧的列中.
我可以在其他列中显示图标吗?
我遇到了以下问题.
我有一个ListView,其自定义行包含imageview和textview.textview的xml代码是
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="26px"
android:layout_marginLeft="3px"
android:singleLine="true"
android:ellipsize="end"
android:textColorHighlight="#FEC403"
/>
Run Code Online (Sandbox Code Playgroud)
然后我有一个itemclicklistener工作正常,我想通过执行以下操作突出显示已单击的textview.
public void onItemClick(AdapterView<?> adaptview, View clickedview, int position,
long id) {
//TODO: ACTIONS
String pathtofile = (String) adaptview.getItemAtPosition(position);
View rowview = (View) adaptview.getChildAt(position);
rowview.setSelected(true);}
Run Code Online (Sandbox Code Playgroud)
我希望高亮颜色为xml中的"#FEC403"(浅橙色),但高亮颜色仍为灰色.那么如何正确设置高亮颜色?
提前致谢
编辑:
这是我最终如何做到的:
这是我的ListView Item xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/rowselector"
>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/musicicon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/musicicon"
android:paddingLeft="3px"
/>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="26px"
android:layout_marginLeft="3px"
android:singleLine="true"
android:ellipsize="end"
android:focusable="false"
/>
Run Code Online (Sandbox Code Playgroud)
和rowselector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> …Run Code Online (Sandbox Code Playgroud) 我试图在Windows 7上运行的WPF应用程序中从Windows 8重新创建Mail UI.这是我想要实现的:

特别是,我不知道如何更改所选项目的背景颜色,例如第一列中的收件箱项目和第二列中来自Twitter的邮件.我尝试过其他类似的Stackoverflow问题的几个解决方案,但似乎没有一个适合我.例如
这是我的listview代码:
<ListView Grid.Row="0" SelectedItem="{Binding Path=SelectedArea}" ItemsSource="{Binding Path=Areas}" Background="#DCE3E5" >
<ListView.Resources>
<!-- Template that is used upon selection of an Area -->
<ControlTemplate x:Key="SelectedTemplate" TargetType="ListViewItem">
<Border Background="#388095" Cursor="Hand" >
<TextBlock Text="{Binding Name}" Margin="5" />
</Border>
</ControlTemplate>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<!-- Base Template that is replaced upon selection -->
<ControlTemplate TargetType="ListViewItem">
<Border Background="#DCE3E5" Cursor="Hand" >
<TextBlock Text="{Binding Name}" Margin="5" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="true" /> …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个Android项目,它利用Homescreen Widget向用户显示数据.我在Widget中使用的视图是一个ListView.以下是我的代码:
WidgetService类
public class WidgetService extends RemoteViewsService
{
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent)
{
return (new WidgetRemoteViewsFactory(this.getApplicationContext(), intent));
}
}
Run Code Online (Sandbox Code Playgroud)
WidgetProvider类
public class WidgetProvider extends AppWidgetProvider
{
@Override
public void onDeleted(Context context, int[] appWidgetIds)
{
super.onDeleted(context, appWidgetIds);
}
@Override
public void onDisabled(Context context)
{
super.onDisabled(context);
}
@Override
public void onEnabled(Context context)
{
super.onEnabled(context);
}
@Override
public void onReceive(Context context, Intent intent)
{
super.onReceive(context, intent);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds)
{
for(int i=0;i<appWidgetIds.length;i++) …Run Code Online (Sandbox Code Playgroud) 我MultiSelect将listView 的属性设置为false,我正在尝试获取单个listViewItem.但可用的财产是SelectedItems.我一直在使用以下代码......
foreach (ListViewItem item in listView1.SelectedItems)
{
//do something with item.text or whatever
}
Run Code Online (Sandbox Code Playgroud)
因为我知道只会选择一个项目.这样做的正确方法是什么?