我使用RecyclerView显示项目列表,我需要按位置更新单个项目的状态.我正在更新列表中的项目然后调用notifyItemChanged(int position),如下所示:
myList.set(position, newModifiedItem);
notifyItemChanged(position);
Run Code Online (Sandbox Code Playgroud)
该项目已成功更新,但也会随机更新其他项目,每次我在项目列表中向上和向下滚动时,此更新(不同的图标状态)也会在其他项目上进行.
我正在进行更改onBindViewHolder,我按位置检查列表项目并决定设置不同的状态.
完整适配器代码:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<MyObj> myList;
public MyAdapter(List<MyObj> list) {
this.myList = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_item, parent, false);
return new ViewHolder(view);
}
public void onBindViewHolder(final ViewHolder holder, final int position) {
MyObj myObj = myList.get(position);
boolean isSpecial = myObj.getMySpecialStatus();
holder.myItemTitle.setText(myObj.getTitle());
//decide if item has different icon state
if (isSpecial) {
holder.myItemIcon.setImageResource(R.drawable.ic_special);
}
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 让我们假设 2 个活动Activity1和Activity2。我需要调用方法methodAct1()(内Activity1从)methodAct2(内部Activity2)。我认为它应该使用回调侦听器工作 - 我不想使用EventBus库!
我得到 java.lang.NullPointerException使用这个代码:
界面:
public interface MyListener {
public void listen();
}
Run Code Online (Sandbox Code Playgroud)
创建事件的活动:
public class Activity2 extends Activity {
private MyListener myListener;
public void setUpListener(MyListener myListener) {
this.myListener = myListener;
}
private void doWork(){
//do stuff
myListener.listen();
}
}
Run Code Online (Sandbox Code Playgroud)
我希望在工作完成后获得该事件的活动:
public class Activity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Activity2 activity2 = new Activity2();
activity2.setUpListener(new setUpListener() { …Run Code Online (Sandbox Code Playgroud) 我正在开发一个通用的 Windows 10 应用程序,每次我从 Windows 开始菜单卸载应用程序后尝试运行项目时,我都会遇到一个烦人的问题。场景是:
我在本地机器上运行项目 - 应用程序运行良好;
我按 Shift+F5 停止运行;
转到 Windows 开始菜单并卸载刚刚安装的应用程序;
从 Visual Studio 再次运行应用程序;
获取错误 1>Error : DEP0700 : Registration of the app failed. An internal error occurred with error 0x80073D05. See http://go.microsoft.com/fwlink/?LinkId=235160 for help diagnosing app deployment issues. (0x80073cf6)
注意:有时Clean Solution + Rebuild Solution会有所帮助,但有时只有系统重启才能解决问题。这是官方错误还是我遗漏了什么?
我在通用 Windows 中使用 Sqlite 和SQLite.Net-PCL,并为以后的表创建编写了一个类:
[Table("my_tab")]
public class MyObj
{
[PrimaryKey, Column("column1")]
public string myObjField1 { get; set; }
[Column("column2")]
public string myObjField2 { get; set; }
//???
public string myObjField3 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何忽略myObjField3作为表列?
我是UWP的新手,需要使用导航抽屉SplitView,所以我的基本布局结构如下所述.问题是我没有列表项的垂直滚动,也许我想念一些参数,任何帮助表示赞赏.
<SplitView
x:Name="MySplitView"
DisplayMode="CompactOverlay"
IsPaneOpen="True"
CompactPaneLength="50"
OpenPaneLength="280">
<!--navigation drawer-->
<SplitView.Pane>
<StackPanel
Background="Gray">
<StackPanel>
<ListView
x:Name="DrawerListOptions"
SelectionChanged="MySelectionChanged"
SelectionMode="Single"
ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Title}"
FontSize="18"
Margin="5,0,0,0" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
</StackPanel>
</SplitView.Pane>
<!--page stuff-->
<SplitView.Content>
<!--page code-->
</SplitView.Content>
</SplitView>
Run Code Online (Sandbox Code Playgroud) 我想在C#中使用内联接口实现,但是读了一些这样的文章,我发现这不像Java。
假设此接口:
public interface MyListener {
void onHandleOne();
void onHandleTwo();
}
Run Code Online (Sandbox Code Playgroud)
我将此接口作为参数传递:
myMethod(MyListener listener){
//some logic
}
Run Code Online (Sandbox Code Playgroud)
当我调用它时,我想像在Java中那样进行内联实现:
myMethod(new MyListener () {
@Override
public void onHandleOne() {
//do work
}
@Override
public void onHandleTwo() {
//do work
}
});
Run Code Online (Sandbox Code Playgroud)
另外,我制作了一个实现yhis接口的类,并使用该类来调用我的方法:
public class MyImplementor : MyListener {
public void onHandleOne() {
//do work
}
public void onHandleTwo() {
//do work
}
}
Run Code Online (Sandbox Code Playgroud)
并调用我的方法: myMethod(new MyImplementor())
但是每次我要调用此方法(针对不同的行为)时,此解决方案都需要一个新的类,也许有一种方法可以使用lambda或以某种方式做到这一点:
myMethod(new MyImplementor() =>{//handle my methods})
我想在uwp应用程序中播放.mp3或wav声音,我只需要在应用程序打开且ui上没有任何媒体元素的情况下播放它。是否有可能使某些线程同时播放单独的歌曲。任何有关的信息表示赞赏。
我ListView在我的XAML中使用了一个元素:
<ListView
x:Name="myList"
IsItemClickEnabled="true"
ItemClick="onDrawerItemClick"
SelectionMode="Single"
ScrollViewer.VerticalScrollBarVisibility="Hidden">
<ListView.ItemTemplate>
<DataTemplate>
<Grid
Width="260">
<Grid.ColumnDefinitions>
<ColumnDefinition
Width="44" />
<ColumnDefinition
Width="*" />
</Grid.ColumnDefinitions>
<Image
x:Name="image"
Source="{Binding myIcon}"
Grid.Column="0" />
<TextBlock
Text="{Binding myTxt}"
Grid.Column="1" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Run Code Online (Sandbox Code Playgroud)
我使用Bind属性填充它,如下所示:
List<MyObj> listData = a list with title + image uri;
myList.ItemsSource = listData;
Run Code Online (Sandbox Code Playgroud)
我需要禁用一些项目的点击,具体取决于MyObj我的列表中的某些值,但其他项目要有.在Android中我们使用适配器,我应该如何处理它?
我想为BackgroundDownloader实现一个超时功能.当我达到超时时,我无法取消下载操作.所以我这样使用它:
public async void downloadFile(string fileUrl, string fileName) {
var myFolder = await StorageFolder.GetFolderFromPathAsync(Package.Current.InstalledLocation.Path);
var myFile = await myFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
var downloader = new BackgroundDownloader();
var downloadOperation = downloader.CreateDownload(new Uri(fileUrl), myFile);
var task = Task.Run(async () => await downloadOperation.StartAsync().AsTask());
if ( task.Wait(TimeSpan.FromMilliseconds(1000)) ) {
// file is downloaded in time
} else {
// timeout is reached - how to cancel downloadOperation ?????
}
}
Run Code Online (Sandbox Code Playgroud)
我在努力:
downloadOperation.StartAsync().Cancel();
Run Code Online (Sandbox Code Playgroud)
我明白了
WinRT信息:此操作已经开始.调用AttachAsync以附加到正在运行的下载/上载.
downloadOperation.AttachAsync().Cancel();
Run Code Online (Sandbox Code Playgroud)
我明白了
抛出异常:Project.exe WinRT信息中的"System.Runtime.InteropServices.COMException":此操作未启动.调用StartAsync以启动操作.附加信息:在意外时间调用方法.
任何想法都会被贬低!
我有代码:
Glide.with(getActivity())
.load(myurl)
.asGif()
.into(ivGif);
Run Code Online (Sandbox Code Playgroud)
我在 gradle 中导入了 glide:
repositories {
mavenCentral()
maven { url 'https://maven.google.com' }
}
dependencies {
compile 'com.github.bumptech.glide:glide:4.2.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
}
Run Code Online (Sandbox Code Playgroud)
编译器说
无法解析方法.asGif()
我错过了什么吗?